(已编辑)在原始问题中,我错误地假设 GridView 本身使用二维模型。实际上,它采用与其他 QML 视图类似的元素列表。为了使问题和答案更容易理解,我稍微更改了给定的代码。此外,我根据答案添加了工作解决方案。
在主程序中,我定义了一个 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 ???
}
}
我必须使用命名角色还是只能使用正确创建的索引?