我正在使用Rectangle
元素动态创建一些Text
,如下所示:
Rectangle {
id: root
width: 640; height: 480
property var items: []
property int count
function push() {
var temp = Qt.createQmlObject("import QtQuick 2.3; Rectangle {width: 100; height: 30;color: 'yellow'; Text {text: count; anchors.centerIn: parent}}", root, "")
temp.x = Math.floor(Math.random()*200 + 1)
temp.y = Math.floor(Math.random()*200 + 1)
items[count] = temp
count++
}
MouseArea {
anchors.fill: parent
onClicked: push()
}
}
现在,每当我通过点击调用push
函数时,它都会创建一个当前值为count
的新矩形。但问题是到目前为止创建的所有矩形都将其文本更改为count
的现值。我需要创建具有count值的矩形,并且当count
更改后,它们不应更改其文本。我怎样才能做到这一点?谢谢!
答案 0 :(得分:2)
您正在创建的Rectangle
有以下代码:
Text {
text: count
anchors.centerIn: parent
}
此处,text
属性与count
之间存在绑定。因此,只要count
发生变化,text
就会反映出这一变化。
您需要转义字符串定义中的计数以实际连接count
的当前值,以便第一项的代码为:
Text {
text: '0'
anchors.centerIn: parent
}
你的代码应该是:
Rectangle {
id: root
width: 640; height: 480
property var items: []
property int count
function push() {
var temp = Qt.createQmlObject("import QtQuick 2.3; Rectangle {width: 100; height: 30;color: 'yellow'; Text {text: '"+count+"'; anchors.centerIn: parent}}", root, "")
temp.x = Math.floor(Math.random()*200 + 1)
temp.y = Math.floor(Math.random()*200 + 1)
items[count] = temp
count++
}
MouseArea {
anchors.fill: parent
onClicked: push()
}
}