0
我有,我想將內容添加到動態的組件:QML:動態添加矩形到組件實例的孩子
MyThing.qml:
Item{
Rectangle {
id: r1
}
}
main.qml
MyThing {
id: c1
}
在代碼中main.qml下一行我將如何動態地添加一個在c1中的r1子矩形?
我有,我想將內容添加到動態的組件:QML:動態添加矩形到組件實例的孩子
MyThing.qml:
Item{
Rectangle {
id: r1
}
}
main.qml
MyThing {
id: c1
}
在代碼中main.qml下一行我將如何動態地添加一個在c1中的r1子矩形?
首先,您必須將r1
作爲MyThing.qml
中根對象的屬性公開,以便在該範圍外可見。你可以做到這一點使用alias
:
MyThing.qml
:
import QtQuick 2.0
Item {
property alias rect: r1
Rectangle {
id: r1
anchors.fill: parent
}
}
然後,您可以使用Qt.createQmlObject()
創建子矩形,例如:
main.qml
:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
width: 600
height: 400
visible: true
MyThing {
id: c1
anchors.fill: parent
Component.onCompleted: {
Qt.createQmlObject("
import QtQuick 2.0
Rectangle {
color: \"salmon\"
anchors.fill: parent
anchors.margins: 10
}
", rect)
}
}
}
如果子矩形組件存在於單獨的文件中,請使用Qt.createComponent()
。
對於更加結構化的方法,您需要使用某種視圖,如ListView
。該視圖將負責創建子矩形,並且您只需控制應創建多少個(通過model
屬性等等)。