我有一个基于QAbstractListModel的类在QT和QML中定义我已将此模型设置为GridView。它工作完美。如果我更改模型中的数据,我会调用重置函数,并且GridView会显示更新后的数据。但在我改变完整的模型数据时(即不仅仅是数据的变化,还有它的计数变化)。在这种情况下,当我重置数据时,GridView不显示更新后的模型。我也尝试创建我的模型的一个新对象,并改变了GridView模型,但仍然没有效果。在运行时更改QML GridView模型
这里是基本的代码片段。
// DataEngine.h
class DataEngine : public QAbstractListModel
{
Q_OBJECT
public:
.....
public: // Overrides
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
}
// main.c
DataEngine *data = new DataEngine();
view.rootContext()->setContextProperty("DataModel", data)
// QML File
GridView {
.....
id: view
model: DataModel
.....
}
// After completely changing data (i.e earlier it has 256 rows, now it has say 0 row)
// I tried
view.rootContext()->setContextProperty("NewDataModel", data)
// QML Code
view.model = NewDataModel // No effect.
在我看来,数据是不断变化的,但GridView控件不与新的数据更新。
任何帮助表示赞赏。
最好的问候, 法鲁克艾尔沙德
感谢科尔添加额外的信息;更多的信息总是更好! –