我在 QT 和 QML 中定义了一个基于 QAbstractListModel 的类,我将此模型设置为 GridView。它工作完美。如果我更改模型中的数据,我会调用重置函数,GridView 会显示更新的数据。但有时我会更改完整的模型数据(即不仅数据更改,而且其计数也更改)。在这种情况下,当我重置数据时,GridView 不会显示更新的模型。我还尝试为我的模型创建一个新对象并更改了 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 并未使用新数据进行更新。
任何帮助表示赞赏。
最好的问候, Farrukh Arshad