【发布时间】:2017-10-20 06:05:25
【问题描述】:
我有一个带有一些可以包含文本的矩形的屏幕。应该允许这些矩形的文本内容通过单击使用该组件的屏幕中的按钮来更改。我遇到的问题是如何在使用此组件的屏幕中知道选择了哪个实例。我想过通过发出一个信号来解决这个问题,该信号将实例的 id 作为参考传输,但似乎这不起作用。这怎么可能实现?这是我的自定义矩形组件
Rectangle {
id: root
width: 50
height: 50
color: "#000000"
anchors.verticalCenter: parent.verticalCenter
border.color: "#555555"
property int value: 0
signal sendId(Item)
Text {
id: displayed_text
color: "#ffffff"
text: root.value
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pixelSize: 15
}
MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: {
root.border.color="#222222"
root.sendId(root.id)
}
}
}
这里是其他按钮应该更改自定义组件内容的文件:
property Item selected: myRectangle
function changeSelected(value) {
selected.value=5
}
function setSelected(it) {
root.selected=it
}
MyRectangle {
id: myRectangle
Component.onCompleted: {
myRectangle.sendId.connect(tempNumber.setSelected)
}
}
MyRectangle {
id: myRectangle1
Component.onCompleted: {
myRectangle1.sendId.connect(tempNumber.setSelected)
}
}
MyRectangle {
id: myRectangle2
Component.onCompleted: {
myRectangle2.sendId.connect(tempNumber.setSelected)
}
}
【问题讨论】: