2014-03-13 41 views
0

我想在QML中定義一個用於其他組件的通用按鈕。它應該在對象上調用onCLick方法並將其ID傳遞給該函數。除了id部分之外,一切都可以工作。引用QML中的對象ID

該按鈕用下面的代碼來定義:

Rectangle { 
    width: 100 
    height: 20 
    color: "#d1d7f5" 
    radius: 10 
    property string btnText 

    MouseArea { 
     anchors.fill: parent 
     onPressed: parent.color = "#645fa9" 
     onReleased: parent.color = "#d1d7f5" 
     onClicked: { 
      context.onClicked(this.id) /// This is the line of problem 
     } 
    } 
    border.color: "#645fa9" 
    border.width: 2 

    Text { 
     id: textBtn 
     anchors.horizontalCenter: parent.horizontalCenter 
     anchors.verticalCenter: parent.verticalCenter 
     color: "#2e3b7f" 
     text: parent.btnText 
     font.bold: true 
     font.family: "Verdana" 
     font.pixelSize: 30 
    } 

} 

該按鈕可在在另一QML文件被用作這樣的:

Button { 
    id: button1 
    x: 141 
    y: 30 
    btnText: "A Button" 

} 

Python的我使用以接收信號是在這裏:

class Context(QObject): 

    @Slot(object) 
    def onClicked(self, btn): 
     print btn 

當按鈕被點擊時,它打印None。如果this.id被替換爲字符串,則它將打印字符串。 我也嘗試給Rectangle一個id屬性,但它沒有奏效。

回答

1

我認爲沒有辦法得到它的id字段。 您可能會添加一個額外的屬性或使用您的btnText來區分按鈕。

+0

這是我想出的解決方案。是絕對希望有更聰明的東西.. – CodeTower