首页 文章

QML-如何在QML中使用ListViews的多个数据模型

提问于
浏览
1

我想在2个列表视图中使用2个模型,但第2个列表不像第一个列表那样填充 . 我使用的代码如下:

Q_DECL_EXPORT int main(int argc, char *argv[])
{
  QScopedPointer<QApplication> app(createApplication(argc, argv));
  MyModel myModel;
  myModel.addPrimaryData(ModelItem(1, "Apple"));
  myModel.addPrimaryData(ModelItem(2, "Orange"));
  myModel.addPrimaryData(ModelItem(3, "Banana"));

  MyModel myModel2;
  myModel2.addSecondaryData(ModelItem(1, "Apple2"));
  myModel2.addSecondaryData(ModelItem(2, "Orange2"));
  myModel2.addSecondaryData(ModelItem(3, "Banana2"));

  QDeclarativeView declView;
  QDeclarativeContext *declContext = declView.rootContext();
  declContext->setContextProperty("myModel", &myModel);
  declContext->setContextProperty("myModel2", &myModel2);

  declView.setSource(QUrl("qml/MyDemo/main.qml"));
  declView.show();

  return app->exec();
}

如上所示,我创建了2个模型,即myModel和myModel2,并在QML中的2个Listy视图中使用 .

ListView1使用模型myModel,ListView2使用模型myModel2 . 但myModel2数据未显示在列表中 .

任何具体原因 . 请回复你的想法 .

我使用的QML代码如下:

ListView {
   id:firstListView
   model: myModel
   delegate: Item{
   id: firstDelegate
   Text {
     text: name
     color: "white"
   }
 }
}

 ListView {
   id: secondListView
   model: myModel2
   delegate: Item{
   id: secondDelegate
   Text {
      text: name
      color: "white"
     }
   }
 }

1 回答

  • 0

    由于您尚未向我们提供 MyModel 实施,因此我们无法提供帮助 . 现在我可以建议的是检查以下内容:

    • 确保第二个模型的角色名称实际上是"name" .

    • 确保第二个 ListView 不只是隐藏在第一个下面 .

    • 比较 addPrimaryDataaddSecondaryData 之间的实现,以确保代码在两者中都有效 .

    如果您想要更具体的答案,您必须向我们展示您的 MyModel 如何运作 .

相关问题