Javascript 数组';s onChanged属性不';在QML中的鼠标点击上推送其中的项目时,不会被调用 Access.qml main.qml 输出(鼠标点击):
当我在pp中推送项目时,为什么没有调用onPpChanged?我该怎么做才能调用它呢?这是因为QML中的数组不是QML对象。报告说: 此外,由于[…]不是QML对象,因此更改其单个值不会触发属性更改通知。如果上面的示例有onNumberChanged或onAnimalChanged信号处理程序,则不会调用它们。但是,如果项目或属性本身被重新分配给不同的值,则将调用此类处理程序 因此,要使代码正常工作,您需要在修改数组时自己抛出信号。因此,您的代码应该如下所示:Javascript 数组';s onChanged属性不';在QML中的鼠标点击上推送其中的项目时,不会被调用 Access.qml main.qml 输出(鼠标点击):,javascript,qt,qml,qtquick2,Javascript,Qt,Qml,Qtquick2,当我在pp中推送项目时,为什么没有调用onPpChanged?我该怎么做才能调用它呢?这是因为QML中的数组不是QML对象。报告说: 此外,由于[…]不是QML对象,因此更改其单个值不会触发属性更改通知。如果上面的示例有onNumberChanged或onAnimalChanged信号处理程序,则不会调用它们。但是,如果项目或属性本身被重新分配给不同的值,则将调用此类处理程序 因此,要使代码正常工作,您需要在修改数组时自己抛出信号。因此,您的代码应该如下所示: MouseArea {
MouseArea
{
anchors.fill: parent
onClicked:
{
pp.push(inde++);
ppChanged();
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
MouseArea
{
anchors.fill: parent
onClicked:
{
pp.push(inde++);
ppChanged();
console.log("mousearea shows pp's length: " + pp.length);
}
}