如何在QQmlList属性中正确通知?
How to correctly notify in QQmlListProperty properties?
每当我创建一个供以后在Qml中使用的Q_PROPERTY
时,我总是创建一个通知信号来告诉qml数据已更改并需要重新评估。
现在有了QQmlListProperty<T>
类型的Q_PROPERTY
,我该如何发出项目已被修改、添加或删除的信号?
这可能吗?
如果你有一个列表,就不能有propertyChanged()
信号,因为存储的对象引用将保持不变。
列表中不会有属性,因此不会发出任何信号。
您可以改用旨在处理此问题的QAbstractListModel
的后代,通过将要追加、插入等的方法包装在自己的方法中,然后发出一个dataChanged
信号,该信号携带查找更改所需的信息。
当然,您可以通过将QList
包装在另一个对象中来实现类似的东西,该对象具有通知您数据更改的信号。然而,这不会与QML作为真实模型很好地集成,因为至少视图会在接收到dataChanged
信号时自动更新,他们甚至只更新必要的内容。
如果直接更改View
的model
,则情况并非如此,如果您手动调用modelChanged()
,可能会发生这种情况。在这种情况下,View
会错过有关更改部件的信息,因此它将完全重新创建自己。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- MSVC是否支持C++11样式的属性而不是__declspec
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 用概念检查属性的类型
- C++如何将同一类的实例作为属性
- 函数如何通知用户它基于函数原型抛出异常?
- 按多个属性排序
- 主函数参数的属性
- 如何在ECS框架中更新组件数据和通知系统
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- C++删除未使用的类属性会导致 std::logic_error
- 当 I2C 值在C++中发生变化时收到通知
- 如何在QQmlList属性中正确通知?
- 从元对象获取属性更改通知程序
- 属性通知在C /CX绑定中更改了