Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

[ListView]How to use C++ to add Row for ListView?

$
0
0
There is an unofficial way. use QMetaObject::invokeMethod     QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml"));     QObject *topLevel = engine.rootObjects().value(0);     QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);     if ( !window ) {         qWarning("Error: Your root item has to be a Window.");         return -1;     }     window->show();     QObject *model = topLevel->findChild<QObject*>("listmodel");     if (model) {         qDebug() << "model exists";         QVariantMap newElement;  // QVariantMap will implicitly translates into JS-object         newElement.insert("name","from cpp");         QMetaObject::invokeMethod(             model,                          // for this object we will call method             "append_",                                         // actually, name of the method to call             Q_ARG(QVariant, QVariant::fromValue(newElement))  // method parameter         );     } main.qml contains     ListView {         id: list_view1         anchors.fill: parent         delegate: Item {             x: 5             height: 40             Row {                 id: row1                 spacing: 10                 Text {                     text: name                     font.bold: true                     anchors.verticalCenter: parent.verticalCenter                 }             }         }         model: ListModel {                 id: myModel                 objectName: "listmodel"                 function append_(newElement) {                     append(newElement)                 }         }     }

Viewing all articles
Browse latest Browse all 4972

Trending Articles