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
屬性,但它沒有奏效。
這是我想出的解決方案。是絕對希望有更聰明的東西.. – CodeTower