如何设置动态创建的对象的一个​​或多个属性?

时间:2019-07-02 18:25:23

标签: qt qml

我的问题很简单。如果我动态创建了qml组件,该如何设置其属性?
在这个示例中,我想在单击按钮元素时更改颜色

Window {
    id:win
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Component.onCompleted: {

      var comp=Qt.createComponent("MyRectangle.qml")
      comp.createObject(page,{"id":"pippo","color":"yellow","width":50})

    }


    Page{
     id: page
     anchors.fill: parent


     Button{


         x:200
         height: 50
         width: 50
         onClicked:{

            // i want to set color of the rectangle tha i have created
         }
       }

    }

}

MyRectangle是我的自定义qml对象。

Rectangle {
    id:pippo
    color:"red"
    width:30
    height: 30
}

1 个答案:

答案 0 :(得分:1)

您必须使用创建的对象来完成此操作,并且可以获得createObject()返回的信息:

Window {
    id:win
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    property var pippo_object: null
    Component.onCompleted: {
        var comp=Qt.createComponent("MyRectangle.qml")
        pippo_object = comp.createObject(page, {
                                            "id":"pippo",
                                            "color":"yellow",
                                            "width":50
                                        })
    }
    Page{
        id: page
        anchors.fill: parent
        Button{
            x:200
            height: 50
            width: 50
            onClicked:{
                if(pippo_object!==null)
                    pippo_object.color = Qt.rgba(Math.random(), 
                                                Math.random(), 
                                                Math.random(),
                                                1)
            }
        }
    }
}