Quantcast
Channel: Jobs
Viewing all articles
Browse latest Browse all 18427

Accessing QML ListModel-Items with C++

$
0
0
Hey Guys, After finishing my program with a regular Qt Gui I have to update it for tablets. One main feature is the possibility to rearrange the UI by Drag&Drop. There are 7 elements with each 3 pictures. These pictures shall be updated by c++ code. My problem is that I don’t know how to access the different elements to change the pictures. This is what I’ve written: WidgetModel.qml import QtQuick 2.0   ListModel {                 ListElement {                     objectName: "galley1"                     hoverColor: "#5040e020"                     color: "transparent"                     galleyName: "Galley 1"                     nextpicture: "Images/widget1.png"                     currentpicture: "Images/widget1.png"                     lastpicture: "Images/widget1.png"                 }                 ListElement {                     objectName: "galley2"                     hoverColor: "#5040e020"                     color: "transparent"                     galleyName: "Galley 2"                     nextpicture: "Images/widget2.png"                     currentpicture: "Images/widget2.png"                     lastpicture: "Images/widget2.png"                 } } main.qml Rectangle{         id: window           property color galleyColor           width: 1366         height: 768         color: "#00ff15"           ListView {             id: galleylist             x: 0             y: 0             width: 1366             height: 768             boundsBehavior: Flickable.StopAtBounds             z: 1             anchors.horizontalCenterOffset: 50             anchors.topMargin: 100             anchors.horizontalCenter: parent.horizontalCenter             anchors.verticalCenter: parent.verticalCenter             anchors.top: parent.top             spacing: 10             orientation: ListView.Horizontal               displaced: Transition {                 NumberAnimation { properties: "x,y"; easing.type: Easing.OutQuad }             }               model: VisualDataModel {                 id: visualModel                 model: WidgetModel {                     id: colormodel}                   delegate: MouseArea {                     id: delegateRoot                       property int visualIndex: VisualDataModel.itemsIndex                       width: 170; height: 400                     drag.target: icon                       GalleyViewer {                         objectName: model.objectName                         id: icon                         width: 170; height: 400                         anchors {                             horizontalCenter: parent.horizontalCenter;                             verticalCenter: parent.verticalCenter                         }                         color: galleyColor                         mouseOverColor: model.hoverColor                         galleyName: model.galleyName                         nextpicture: model.nextpicture                         lastpicture: model.lastpicture                         currentpicture: model.currentpicture                         radius: 3                           Drag.active: delegateRoot.drag.active                         Drag.source: delegateRoot                         Drag.hotSpot.x: 36                         Drag.hotSpot.y: 36                           states: [                             State {                                 when: icon.Drag.active                                 ParentChange {                                     target: icon                                     parent: galleylist                                 }                                   AnchorChanges {                                     target: icon;                                     anchors.horizontalCenter: undefined;                                     anchors.verticalCenter: undefined                                 }                             }                         ]                     }                       DropArea {                         anchors { fill: parent; margins: 15 }                         onEntered: visualModel.items.move(drag.source.visualIndex, delegateRoot.visualIndex)                     }                 }             }     } main.cpp #include <QApplication> #include <QtCore> #include <QQuickItem> #include <QQuickView> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>   #include "qtquick2applicationviewer.h" #include "gui.h"   int main(int argc, char *argv[]) {     QApplication app(argc, argv);       QtQuick2ApplicationViewer viewer;     viewer.setMainQmlFile(QStringLiteral("qml/QML-MRGalleyServer/main.qml"));     viewer.show();     QQuickItem* item = viewer.rootObject();     item->setProperty("galleyColor","#a6cea9"); // Works without problems       QList<QObject*> objectList = viewer.findChildren<QObject*>("galley1"); // does not work     for(int i = 0; i<objectList.size();i++){         if(objectList.at(i))             objectList.at(i)->setProperty("nextpicture","Images/widget2.png");     }         qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));     return app.exec(); } Does anyone know where my fault is? Or is there a simpler solution? If anyone knows good examples for c++ programs with qml guis let me know =) Thank you!

Viewing all articles
Browse latest Browse all 18427

Trending Articles