Quantcast
Channel: QtWebEngine
Viewing all articles
Browse latest Browse all 13965

How to access (c++) model data from qml

$
0
0
Hi, I’m new with qlm and I have a problem to access data from a Subclass in my ListModel (derived from QAbstractListModel ). I use the ListModel with a ListView and everything is fine. But I also wanna access the Data outside of the ListView. For this reason I use a public slot to get the data from my (c++) ListModel dependent on the current selected item in the ListView. This part also works fine, but from this point I could not access the explicit model (entry) stored in my ListModel Here some code snippets: I hope your guys can help me. main.cpp     ListModel *listModel = new ListModel();     listModel->add(new Subclass("Class 1", "Class 1.1", "Class 1.2") );   //    qmlRegisterInterface<ListModel>("ListModel");     qmlRegisterInterface<Parent>("Parent");     qmlRegisterInterface<Subclass>("Subclass");        qRegisterMetaType<Parent>("Parent");      qRegisterMetaType<Parent>("Subclass");       QtQuick2ApplicationViewer viewer;     viewer.rootContext()->setContextProperty("listModel", listModel);       viewer.setMainQmlFile(QStringLiteral("qml/test/main.qml"));     viewer.showExpanded(); parent.h class Parent : public QObject {     Q_OBJECT     Q_PROPERTY(QString firstname READ getFirstname WRITE setFirstname NOTIFY firstNameChanged )     Q_PROPERTY(QString lastname READ getLastname WRITE setLastname NOTIFY lastNameChanged)   public:     explicit Parent(){}     explicit Parent(const QString &first, const QString &last,QObject *parent = 0);     Parent( const Parent &p);     Parent& operator=(const Parent & p);   signals:     public slots:     QString getFirstname() const;     QString getLastname() const ;       void setFirstname( const QString &firstname);     void setLastname( const QString &lastname);   private:     QString _firstname;     QString _lastname;   signals:     void firstNameChanged();     void lastNameChanged();     };   Q_DECLARE_METATYPE( Parent ) class Subclass : public Parent {     Q_OBJECT       Q_PROPERTY(QString scublassname READ getSubclassName WRITE setSubclassName NOTIFY subclassNameChanged)   public:     Subclass(){}     Subclass( const QString &last, const QString &first, const QString &sub);     Subclass( const Subclass &subclass);     Subclass& operator=(const Subclass & subclass);   public slots:     QString getSubclassName() const ;     void setSubclassName(const QString & name);   private:     QString _className;   signals:     void subclassNameChanged(); };   Q_DECLARE_METATYPE( Subclass ) main.qml import QtQuick 2.0   Rectangle {     width: 360     height: 360       Component     {         id: decorator         Rectangle{             height: 100             width: 360               color: "yellow"             opacity: 0.5               Text {              text:  '<b>Firstname:</b> ' + model.firstname1 + '<br>' +                     '<b>Lastname:</b> ' + model.lastname1 + '<br>' +                     '<b>SubclassName:</b> ' + model.scublassname1 + '<br>'             }               MouseArea {                 anchors.fill: parent;                 onClicked:{                     listview.currentIndex = index;                 }             }         }     }       ListView{         id: listview        anchors.top: parent.top        anchors.left: parent.left        anchors.right: parent.right           height: 200         model: listModel         delegate: decorator         spacing: 15         focus: true         clip: true       }       Rectangle{         color: "blue"         anchors.top: listview.bottom         anchors.left: parent.left         anchors.right: parent.right         height: 160           Text{             anchors.fill: parent             text: {                 "index =["+listview.currentIndex+"]  " +  listModel.get(listview.currentIndex).firstname             }         }     } }

Viewing all articles
Browse latest Browse all 13965

Trending Articles