cdataobject.h----------------------------------------
#ifndef CDATAOBJECT_H #define CDATAOBJECT_H #include <QObject> class CDataObject : public QObject { Q_PROPERTY( QString mstrName READ getName WRITE setName NOTIFY nameChanged ) Q_OBJECT public: explicit CDataObject(QObject *parent = 0); /*mstrName get,set*/ QString getName() const; void setName(const QString& strName); private: QString mstrName; signals: void nameChanged(QString); public slots: }; #endif // CDATAOBJECT_H
#include "cdataobject.h" CDataObject::CDataObject(QObject *parent) : QObject(parent) { this->mstrName = QString("shawhen"); this->mstrColor = QString("black"); } /*mstrName get,set*/ QString CDataObject::getName() const { return (this->mstrName); } void CDataObject::setName(const QString& strName) { if( this->mstrName != strName ) { this->mstrName = strName; emit nameChanged(this->mstrName); } }
QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent) : QQuickView(parent) , d(new QtQuick2ApplicationViewerPrivate()) { connect(engine(), SIGNAL(quit()), SLOT(close())); setResizeMode(QQuickView::SizeRootObjectToView); this->mpDataObject = new CDataObject(); this->rootContext()->setContextProperty( "dataObject",this->mpDataObject ); }
import QtQuick 2.0 Rectangle { width: 360; height: 360 ListView { width: 60; height:200; model: dataObject; delegate: Rectangle{ width: 60; height:20; color: "lightblue"; Text { text: model.modelData.mstrName; } } } }
#include <QtGui/QGuiApplication> #include "qtquick2applicationviewer.h" int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QtQuick2ApplicationViewer viewer; viewer.setMainQmlFile(QStringLiteral("qml/GridQML/main.qml")); viewer.showExpanded(); //viewer.mpDataObject->setName("went"); return app.exec(); }