QtはQML and suggests three approaches in the docsとC++のモデルを結合する可能性を提供しています:QMLのオブジェクトを含むQAbstractListModelの短所は何ですか?
QStringList
QObjectList
QAbstractItemModel
前の二つは使用が非常に簡単であり、例えばQObjectList
:
// in C++
QList<QObject*> dataList;
dataList.append(new DataObject("Item 1", "red"));
// in QML
ListView {
model: dataList
delegate: Text { text: name }
}
しかし、彼らの両方が強力な警告が付属しています:
注:ビューは QListの内容が変更されたことを知るための方法はありません。 QListに変化した場合、
QAbstractItemModel
は、オブジェクトのプロパティを直接同期でそれらを保つため、露出していないされているので、オブジェクトを使用することは困難であるのかなりを取る[...] モデルをリセットする必要があります努力。
QAbstractItemModel
にQList
をラップしてスーパーシンプルなモデルを得ることができます。ここを参照してください:Implementation 1、
Implementation 2はQtは、これをネイティブに実装していない理由はありますか?パフォーマンス?メモリ管理の問題?これは明らかに良い考えで、ObjectModel
と同じようなものを実装しています。