- All (478)
- jom (0)
- Qt Linguist (7)
- Qt Eclipse Integration (9)
- Qt Designer (7)
- Qt Creator (4)
- Qt build system: qmake (31)
- Qt build system: configure (3)
- Qt Assistant (5)
- Printing (4)
- Porting from Qt 3 to Qt 4 (1)
- Plugins (7)
- Qt Visual Studio AddIn (2)
- Qt/MFC Migration (2)
- QtScript (3)
- MDI (2)
- XML (1)
- Widgets (22)
- WebKit (5)
- Tools and Containers (2)
- Threads (2)
- Text Handling (10)
- SQL (6)
- QtTest (1)
- QtService (1)
- Platform: Windows (49)
- Platform: Unix (16)
- Platform: Mac OS X (18)
- Image Formats (2)
- I/O (2)
- Graphicsview (8)
- Font handling (9)
- Event System (18)
- Drag and Drop (4)
- Dialogs (6)
- Desktop integration (3)
- ActiveQt (3)
- Itemviews (60)
- Layout (4)
- Qt Quick (10)
- Qt SDK (1)
- Licensing (2)
- Platform: Embedded Linux (38)
- Painting (32)
- OpenGL (4)
- Object Model (6)
- Network (5)
- Multimedia (3)
- Miscellanous (23)
- Main Window (19)
- Look and Feel (23)
- Development (0)
- Getting Involved (0)
- Routines (0)
How can I allow external objects to directly access and modify child objects in a component?
In order to allow external objects to modify and access child objects in another component, you can use Property Aliases [doc.qt.nokia.com]. Property Aliases allow you to make properties in a component directly accessible when importing the component.
The following example illustrates how this can be done:
main.cpp
- #include <QtGui>
- #include <QtDeclarative>
- int main(int argc, char** argv)
- {
- QDeclarativeView view;
- view.resize(800,200);
- view.show();
- return app.exec();
- }
main.qml
- import QtQuick 1.0
- Rectangle {
- width: 740; height: 150
- Column {
- anchors.fill: parent; spacing: 20
- Text {
- text: "Example that illustrates how to allow external objects to directly modify and access child objects in a component"
- font.pointSize: 12; anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- Row {
- anchors.verticalCenter: parent.verticalCenter
- Button { onClicked: { buttonLabel = "New value for Button" } }
- Button { onClicked: { buttonLabel = "New value for Button" }}
- Button { onClicked: { buttonLabel = "New value for Button" }}
- }
- }
Button.qml
- import QtQuick 1.0
- Rectangle {
- id: root;
- property alias buttonLabel: label.text
- signal clicked()
- width: 120
- height: 30
- color: mouse.pressed ? "lightgray" : "white"
- radius: 4
- border.width: 1
- border.color: "gray"
- MouseArea {
- id: mouse
- anchors.fill: parent
- onClicked: root.clicked();
- }
- Text {
- id: label
- anchors.centerIn: parent
- text: "Click Me"
- }
- }

No comments