【发布时间】:2016-12-18 04:48:16
【问题描述】:
我遵循这个示例是为了了解如何将 QList 用作 QML 的 ListModel。
我想从 C++ 修改列表。因此我将列表放入一个新的 QObject 以便能够使用计时器。在计时器回调中,我修改了现有元素的颜色并将新元素附加到列表中。
void MyObject::setList(QList<QObject *>* l)
{
list = l;
QTimer* timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(addElement()));
timer->start(2000);
}
void MyObject::addElement()
{
list->append(new DataObject("Item 1", "red"));
((DataObject *) list->at(0))->setColor("blue");
}
QML 中显示颜色变化,但是 QMLs ListView 中列表的长度没有变化。我错过了什么?需要哪些步骤让 QML 了解列表的大小变化?
我了解颜色和名称属性是通过 Q_PROPERTY makro 注册的
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
如何将其转换为列表的长度?
【问题讨论】: