C ++类中有一个无符号整数的列表。可以通过某种方式在类中修改列表。有一个QML对象必须使用此列表。我应该如何声明列表以使对象能够使用列表中的值,并在更改C ++中列表的内容后在QML中获取适当的值?
目前,该列表定义为:
QVariantList cards;
Q_PROPERTY(QVariantList cards MEMBER cards NOTIFY setChanged)
void setChanged ( QVariantList const &cards );
但是QML仅获取cards
初始值(空列表),并且稍后没有“注意到”其中的任何更改。
答案 0 :(得分:1)
需要NOTIFY信号是可选的。我想这是因为我们需要故意让QML知道数据已准备好但数据在读取数据时会消耗掉。除此之外,我们几乎总能避免编程NOTIFY。我甚至做rootItem-> setProperty(" propertyName",value)偶尔将新值推入QML,特别是如果onPropertyNameChanged处理程序准备好了。
以下可能会做你想要的。或者它是必需的,并且为那些不受伤害的人添加了NOTIFY,但增加了“不可操作性”。
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;
};
更详细explanation。我从那里使用留言板概念。