Extending QML with a C++ class in a namespace: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Add "cleanup" tag)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
[[Category:snippets]]
[[Category:snippets]]



Revision as of 15:37, 3 March 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

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

#include <QtGui>
#include <QtDeclarative>

namespace MyNamespace {
 class Person : public QObject
 {
 Q_OBJECT
 Q_PROPERTY(QString name READ name WRITE setName)
 Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
 public:
 Person()
 {}

QString name() const
 {
 return m_name;
 }
 void setName(const QString &amp; n)
 {
 m_name = n;
 }

int shoeSize() const
 {
 return m_size;
 }
 void setShoeSize(int s)
 {
 m_size = s;
 }

private:
 QString m_name;
 int m_size;
 };
}

#include "main.moc"

using namespace MyNamespace;

int main(int argc, char** argv)
{
 QApplication app(argc, argv);
 qmlRegisterType<Person>("People", 1, 0, "Person");
 MyNamespace::Person myObj;
 QDeclarativeView view;
 view.rootContext()->setContextProperty("rootItem", (Person *)&amp;myObj);
 view.setSource(QUrl::fromLocalFile("main.qml"));
 view.resize(200,100);
 view.show();
 return app.exec();
}

main.qml

import QtQuick 1.0
import People 1.0

Text {
 text: myPerson.name

Person {
 id: myPerson;
 name: "Sigurd"
 shoeSize: 24

}
}