====== Components ====== * It’s a good idea to recycle your code and create components for elements that can be reused. * To create a component, place a tree of elements in a file with a ''.qml'' extension. * The tree is then available as a reusable component with the same name as the file but without the ''.qml'' extension. * Example: import QtQuick 1.0 Image { id: button source: "images/button.png" Text { id: label text: "Push me!" color: "white" anchors.horizontalCenter: parent.horizontalCenter anchors.top: parent.top anchors.topMargin: 6 } MouseArea { anchors.fill: parent onClicked: { label.text = "Thanks!"; } } } import QtQuick 1.0 Item { id: myItem width: 400 height: 400 ButtonSimple { id: myButton anchors.horizontalCenter: myItem.horizontalCenter anchors.bottom: myItem.bottom anchors.bottomMargin: 20 } } * ''ButtonSimple.qml'' and ''reusing-buttonsimple.qml'' must be in the same directory. ===== Properties ===== * You can declare a ''property'' to expose a component's internal propery to the outside: import QtQuick 1.0 Image { id: button source: "images/button.png" property string labelText Text { id: label text: labelText color: "white" anchors.horizontalCenter: parent.horizontalCenter anchors.top: parent.top anchors.topMargin: 6 } MouseArea { anchors.fill: parent onClicked: { label.text = "Thanks!"; } } } import QtQuick 1.0 Item { id: myItem width: 400 height: 400 ButtonSimple2 { id: myButton labelText: "Hey you!" anchors.horizontalCenter: myItem.horizontalCenter anchors.bottom: myItem.bottom anchors.bottomMargin: 20 } } ===== Signals ===== * A ''signal'' declaration is similar to a ''property'' declaration except that it's used to let the outside world determine behavior. * In the Button below, ''buttonClicked'' is declared as a signal, and that signal is emitted whenever the MouseArea is clicked. import QtQuick 1.0 Image { id: button source: "images/button.png" property string labelText signal buttonClicked() Text { id: label text: labelText color: "white" anchors.horizontalCenter: parent.horizontalCenter anchors.top: parent.top anchors.topMargin: 6 } MouseArea { anchors.fill: parent onClicked: { button.buttonClicked(); } } } * The actual behavior is defined in the file where Button is used (as ''onButtonClicked''): import QtQuick 1.0 Item { id: myItem width: 400 height: 400 Button { id: button labelText: "PRESS" anchors.horizontalCenter: myItem.horizontalCenter anchors.bottom: myItem.bottom anchors.bottomMargin: 20 onButtonClicked:{ button.labelText="Hooray!"; } } } -------------------------------------------------------------- ====== Resources ====== * {{:qt-quick-for-designers-1:images.zip|}} * All source code is subject to this [[copyright header|copyright]].