QTで定義されたQAbstractListModelベースのクラスがあり、QMLでこのモデルを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 は新しいデータで更新されていません。
どんな助けでも大歓迎です。
よろしく、 ファルーク・アルシャド