数组's onChanged属性没有'当在QML中点击鼠标时,推送其中的项目时,不会被调用
Array's onChanged property doesn't get called when pushing items in it on mouseclicks in QML
Access.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)
}
}
}
main.qml
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对象,更改它们各自的值不会触发属性更改通知。如果上面的例子有onNumberChanged或onAnimalChanged信号处理程序,它们就不会被调用。但是,如果项或属性属性本身被重新分配给不同的值,则会调用这样的处理程序。
因此,为了让代码正常工作,您需要在修改数组时自己抛出信号。所以你的代码应该是这样的:
MouseArea
{
anchors.fill: parent
onClicked:
{
pp.push(inde++);
ppChanged();
console.log("mousearea shows pp's length: " + pp.length);
}
}
相关文章:
- 从Document调用onchange函数.已准备好从更新中预先选择的项目
- $(document).ready未在brunch/jade/主干网项目中调用
- 当控制台不在't在chrome中打开,有些项目不再可点击(有些js调用停止工作)
- 在NPObject上调用方法时出错:(一个理想的)PhoneGap项目
- 如何调用函数以在“ng-repeat”指令中呈现项目
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 如何只调用一次事件处理程序,而不是每次单击项目时调用事件处理程序
- Angular 1.3 中是否有更好的模式,可以在每次修改 ng-repeat 中的项目时调用函数
- 需要在 JavaScript 中调用一个方法,当在 SharePoint 日历中单击更多项目旁边的三角形符号时
- 如何从外部项目调用 Web 方法
- Heroku 它的调用 JavaScript 代码不在我的 Ruby on Rails 项目中
- 在ASP项目中调用JS文件
- 调用所有数组元素的函数,而不将项目作为参数传递
- 添加到我的项目中的 html 页面自定义 atribute 将由它自己调用(如数据绑定)
- 所选下拉列表项目-调用/获取数据
- 使用Ajax调用javascript访问Basecamp项目
- 如何使用silverlight项目中的多个参数调用javascript函数
- 显示未捕获的错误:无法在cordova项目中调用openDatabase方法
- 如何从另一个Rails项目调用javascript文件?ActionController::RoutingError (
- 如何调用项目中未定义的函数