У меня есть 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!"; }
Других решений пока нет …