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
을 사용하면 이미 비슷한 것을 구현합니다.