如何从c ++访问qml ListElement

时间:2017-11-23 13:08:55

标签: c++ qt qml qt5 qt5.9

我有一个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的值?

1 个答案:

答案 0 :(得分:3)

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

更具体地说,您将寻找:

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

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!"; }