Extending QML with a C++ class in a namespace: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
The example code below shows how you can extend QML with a C++ class in a custom namespace. | The example code below shows how you can extend QML with a C++ class in a custom namespace. | ||
main.cpp<br /><code><br />#include | main.cpp<br /><code><br />#include <QtGui><br />#include <QtDeclarative> | ||
namespace MyNamespace {<br /> class Person : public QObject<br /> {<br /> Q_OBJECT<br /> Q_PROPERTY(QString name READ name WRITE setName)<br /> Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)<br /> public:<br /> Person()<br /> {} | namespace MyNamespace {<br /> class Person : public QObject<br /> {<br /> Q_OBJECT<br /> Q_PROPERTY(QString name READ name WRITE setName)<br /> Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)<br /> public:<br /> Person()<br /> {} | ||
Line 15: | Line 15: | ||
private:<br /> QString m_name;<br /> int m_size;<br /> };<br />} | private:<br /> QString m_name;<br /> int m_size;<br /> };<br />} | ||
#include | #include "main.moc" | ||
using namespace MyNamespace; | using namespace MyNamespace; | ||
int main(int argc, char** argv)<br />{<br /> QApplication app(argc, argv);<br /> qmlRegisterType | int main(int argc, char** argv)<br />{<br /> QApplication app(argc, argv);<br /> qmlRegisterType<Person>("People", 1, 0, "Person");<br /> MyNamespace::Person myObj;<br /> QDeclarativeView view;<br /> view.rootContext()->setContextProperty("rootItem", (Person *)&myObj);<br /> view.setSource(QUrl::fromLocalFile("main.qml"));<br /> view.resize(200,100);<br /> view.show();<br /> return app.exec();<br />}<br /></code> | ||
main.qml | main.qml | ||
Line 27: | Line 27: | ||
Text {<br /> text: myPerson.name | Text {<br /> text: myPerson.name | ||
Person {<br /> id: myPerson;<br /> name: | Person {<br /> id: myPerson;<br /> name: "Sigurd"<br /> shoeSize: 24 | ||
}<br />}<br /></code> | }<br />}<br /></code> |
Revision as of 06:32, 25 February 2015
Extending QML with a C++ class in a custom namespace
The example code below shows how you can extend QML with a C++ class in a custom namespace.
main.cpp
<br />#include <QtGui><br />#include <QtDeclarative>
namespace MyNamespace {<br /> class Person : public QObject<br /> {<br /> Q_OBJECT<br /> Q_PROPERTY(QString name READ name WRITE setName)<br /> Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)<br /> public:<br /> Person()<br /> {}
QString name() const<br /> {<br /> return m_name;<br /> }<br /> void setName(const QString & n)<br /> {<br /> m_name = n;<br /> }
int shoeSize() const<br /> {<br /> return m_size;<br /> }<br /> void setShoeSize(int s)<br /> {<br /> m_size = s;<br /> }
private:<br /> QString m_name;<br /> int m_size;<br /> };<br />}
#include "main.moc"
using namespace MyNamespace;
int main(int argc, char** argv)<br />{<br /> QApplication app(argc, argv);<br /> qmlRegisterType<Person>("People", 1, 0, "Person");<br /> MyNamespace::Person myObj;<br /> QDeclarativeView view;<br /> view.rootContext()->setContextProperty("rootItem", (Person *)&myObj);<br /> view.setSource(QUrl::fromLocalFile("main.qml"));<br /> view.resize(200,100);<br /> view.show();<br /> return app.exec();<br />}<br />
main.qml
<br />import QtQuick 1.0<br />import People 1.0
Text {<br /> text: myPerson.name
Person {<br /> id: myPerson;<br /> name: "Sigurd"<br /> shoeSize: 24
}<br />}<br />