2016-05-12 100 views

回答

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屬性等等)。