C++ 类中有一个无符号整数列表。该列表可以在类内部以某种方式修改。有一个 QML 对象必须使用此列表。我应该如何声明列表以使对象能够使用列表中的值,并在 C++ 中更改列表的内容后在 QML 中获得适当的值?
目前列表定义为:
QVariantList 卡片;
Q_PROPERTY(QVariantList 卡成员卡通知 setChanged)
void setChanged ( QVariantList const &cards );
但 QML 仅采用 cards
初始值(空列表)并且不会“注意到”其后的任何更改。
最佳答案
是否需要 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 .我使用那里的留言板概念。
关于c++ - 通过属性在 C++ 和 QML 之间共享数组或列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469241/