我有一个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
制作QTableView
或object
,但是没有运气。如何获取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!"; }