如何访问特定组件

时间:2017-01-12 14:16:21

标签: qt qml qtquick2

我写了一个小QML应用程序,每次点击一个按钮时都会创建一个Component的对象。

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    id: mainWindow
    visible: true
    width: 1280
    height: 720

    property int idNumberCounter: 1

    Component {
        id: testComponent

        Rectangle {
            id: rectangleMade
            property int idNumber: 0
            width: 100
            height: 100
            x: 100*idNumber
            border.color: "blue"
        }
    }

    //The button for creating
    Rectangle {
        id: buttonMakeRectangle
        color: "red"
        width: 50
        height: 50
        MouseArea {
            anchors.fill: parent
            onClicked: {
                testComponent.createObject(mainWindow,idNumber:mainWindow.idNumberCounter);
                mainWindow.idNumberCounter++;
            }
        }
    }
}

我现在要做的是设置第二个按钮,例如使用idNumber = 3(如果可用)更改矩形的x值。

有没有办法访问特定组件?

仅供参考:将MouseArea添加到“rectagleMade”并简单地完成工作是不可能的,因为在实际应用中,这个矩形是通过另一个应用程序的dBus控制的。 (它将成为QtWayland的窗口经理)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你可以使用js数组

Window {
    property var myList: []
    function createItem() {
        var item = testComponent.createObject(mainWindow, idNumber:mainWindow.idNumberCounter);
        myList.push(item);
        mainWindow.idNumberCounter++;
     }

     function doSomehting() {
        var item  = myList[3];
        // do something...
     }
}