如何从 C++ 访问 qml ListElement
How to access a qml ListElement from c++
我有一个 ListModel:
ListModel {
ListElement {
property: "value"
}
ListElement {
property: "value2"
}
}
我正在尝试从 C++ Qt 访问它 class。
我已经设法获得对列表模型的引用:
QQmlEngine engine;
QQmlComponent component(&engine,
QUrl("qrc:///path.qml"));
QObject *object = component.create();
调试对象给了我 QQmlListModel(adress)
。
object -> chlidren()
什么也没给我,object -> children().count()
显示 0。
我尝试从 object
制作 QList
或 QTableView
,但没有成功。
如何获取 ListElements 的值?
由于 QQmlListModel
继承了 QAbstractItemModel
,您可以使用此 class 提供和实现的所有方法。
更具体地说,您将寻找:
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!"; }
我有一个 ListModel:
ListModel {
ListElement {
property: "value"
}
ListElement {
property: "value2"
}
}
我正在尝试从 C++ Qt 访问它 class。
我已经设法获得对列表模型的引用:
QQmlEngine engine;
QQmlComponent component(&engine,
QUrl("qrc:///path.qml"));
QObject *object = component.create();
调试对象给了我 QQmlListModel(adress)
。
object -> chlidren()
什么也没给我,object -> children().count()
显示 0。
我尝试从 object
制作 QList
或 QTableView
,但没有成功。
如何获取 ListElements 的值?
由于 QQmlListModel
继承了 QAbstractItemModel
,您可以使用此 class 提供和实现的所有方法。
更具体地说,您将寻找:
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!"; }