通过属性在c++和QML之间共享数组或列表
Share array or list between C++ and QML via property
c++类中有一个unsigned int类型的列表。可以在类内部以某种方式修改列表。有一个QML对象必须使用这个列表。我应该如何声明列表,使对象能够使用列表中的值,并在c++中更改列表的内容后,在QML中获得适当的值?
当前列表定义为:
QVariantList cards;
Q_PROPERTY(QVariantList cards MEMBER cards NOTIFY setChanged)
void setChanged ( QVariantList const &cards );
但是QML只接受cards
的初始值(空列表),并且不会"注意"到之后里面的任何变化。
是否需要NOTIFY信号是可选的。我猜这是为了当我们需要故意让QML知道数据已经准备好了,但是当它读取数据时数据将被消耗。除此之外,我们几乎总是可以避免编写NOTIFY。我甚至做rootItem->setProperty("propertyName", value)偶尔推入新的值到QML,特别是如果有onPropertyNameChanged处理程序准备好了。
下面可能会做你想要的。或者是必需的,添加NOTIFY也不会造成伤害,但会增加' in操作性'。
class MyMsgBoard : public QObject
{
public:
Q_PROPERTY(QVariantList cards READ cards WRITE setCards)
const QVariantList & cards() const { return qvList; }
void setCards(const QVariantList & v) { qvList = v; }
private:
QVariantList qvList;
};
更详细的说明。我使用留言板的概念,从那里
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- C++两个源文件之间共享的枚举的静态实例
- 线程之间的实时数据共享
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- Directx 12 :在两个进程之间共享图形内存
- 子目录之间的 CMAKE 共享变量
- C++ 多个 DLL 之间的共享接口
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- C++:在另外两个对象之间共享一个对象
- 在C++中的程序之间共享指针
- 拥有或在对象之间共享资源
- 在两个结构之间共享数组
- 如何在不同的CMakeList.txt之间共享变量?
- 在QT中的两个窗口之间共享websocket连接
- 在VS2017中,我们如何在项目成员之间共享编译设置
- 通过require在不同的Lua状态之间共享全局变量