我有一个ListModel:

ListModel {
  ListElement {
    property: "value"
  }
  ListElement {
    property: "value2"
  }
}


我正在尝试从C ++ Qt类访问它。

我设法获得对listmodel的引用:

QQmlEngine engine;
QQmlComponent component(&engine,
            QUrl("qrc:///path.qml"));
QObject *object = component.create();


对该对象进行调试会给我一个QQmlListModel(adress)
object -> chlidren()什么也没给我,object -> children().count()却显示0。我尝试用QList制作QTableViewobject,但是没有运气。

如何获取ListElements的值?

最佳答案

由于QQmlListModel继承了QAbstractItemModel,因此您可以使用此类提供和实现的所有方法。

更具体地说,您将寻找:


rowCount()告诉您添加了多少ListItem
index(int row, int column, const QModelIndex &parent = QModelIndex())列始终为0的位置。
itemData(const QModelIndex &index)检索数据。


然后,您可以轻松地遍历模型。

QQmlComponent component(&engine, "MyQmlListModel.qml");
QObject* o = component.create();
QAbstractListModel* m = qobject_cast<QAbstractListModel*>(o);

if (m != nullptr) {
    qDebug() << m->rowCount();
    qDebug() << m->data(m->index(0, 0), 0);
}
else { qDebug() << "failed!"; }

09-10 13:45
查看更多