在 QML 中使用来自全局 属性 的文本动态创建元素
Dynamically creating elements with text from a global property in QML
我正在动态创建一些 Rectangle
s,其中包含一个 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
更改后记时它们不应更改其文本。我怎样才能做到这一点?谢谢!
您正在创建的 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()
}
}
我正在动态创建一些 Rectangle
s,其中包含一个 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
更改后记时它们不应更改其文本。我怎样才能做到这一点?谢谢!
您正在创建的 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()
}
}