(EDITED)在原始問題中,我錯誤地認爲GridView本身使用2維模型。事實上,它與其他QML 視圖一樣,需要一個元素列表。爲了使問題和答案更容易理解,我稍微改變了給定代碼 。此外,我根據答案添加了工作解決方案。從QML訪問QStandardItemModel的項目
在主程序中我定義QStandardItemModel的一個實例:
QScopedPointer<QApplication> app(createApplication(argc, argv));
QmlApplicationViewer viewer;
QStandardItemModel* cppmodel = new QStandardItemModel();
for (int i=0; i<100; i++) {
QStandardItem* item = new QStandardItem(QString("%1").arg(i,2,10,QChar('0')));
cppmodel->appendRow(item);
}
然後,我註冊模式QML有:
viewer.rootContext()->setContextProperty("cppModel",cppmodel);
QStandardItemModel是表,不是嗎?然後,我怎麼能寫一個委託 秀項,在一個簡單的GridView:
GridView {
model: cppModel
delegate: Rectangle {
Text { text: ??? } //WHAT MUST BE USED HERE ???
}
}
我必須使用命名角色或我可以只使用正確創建索引?
嚴格來說,'QStandardItemModel'不是一個表格。它可以是_everything_(表格,樹和水平,我實際上無法表達,每列都有自己的孩子) – Lol4t0