我有一个我想要动态添加内容的组件:
MyThing.qml:
Item{
Rectangle {
id: r1
}
}
main.qml
MyThing {
id: c1
}
在main.qml的下一行代码中,如何在c1中将子矩形动态添加到r1?
答案 0 :(得分:2)
首先,您必须将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
属性等)。