2017-01-12 43 views
0

我写了一个小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值。

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

仅供参考:将“”添加到“rectagleMade”中,仅仅执行工作是不可能的,因为在实际应用中,这些矩形是通过另一个应用程序的dBus控制的。 (这将是QtWayland的窗口管理器)

感谢您的帮助。

回答

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... 
    } 
}