[英]Array's onChanged property doesn't get called when pushing items in it on mouseclicks in QML
import QtQuick 2.0
Rectangle {
id: newq
width: 100
height: 62
property var pp : [1]
onPpChanged:
{
console.log("\non pp changed, show pp's length: " + pp.length)
}
property int inde : 0
MouseArea
{
anchors.fill: parent
onClicked:
{
pp.push (inde++)
console.log("mousearea shows pp's length: " + pp.length)
}
}
}
import QtQuick 2.0
Rectangle {
id: root
width: 360
height: 360
Access
{
color: "red"
}
}
QML debugging is enabled. Only use this in a safe environment.
on pp changed, show pp's length: 1
mousearea shows pp's length: 2
mousearea shows pp's length: 3
mousearea shows pp's length: 4
mousearea shows pp's length: 5
為什么在pp中推送項目時為什么沒有調用onPpChanged? 我該怎么做才能得到它?
這是因為QML中的數組不是QML對象。 該文件說:
此外,由於不是QML對象,因此更改其各個值不會觸發屬性更改通知。 如果上面的示例具有onNumberChanged或onAnimalChanged信號處理程序,則不會調用它們。 但是,如果將項目或屬性屬性本身重新分配給不同的值,則將調用此類處理程序。
因此,要使代碼正常工作,您需要在修改數組時自行拋出信號。 因此,您的代碼應如下所示:
MouseArea
{
anchors.fill: parent
onClicked:
{
pp.push(inde++);
ppChanged();
console.log("mousearea shows pp's length: " + pp.length);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.