Extending QML with a C++ class in a namespace
(Redirected from Extending QML with a C class in a namespace)
En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh
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& n) { m_name = n; }
int shoeSize() const { return m_size; }
void setShoeSize(int s) { m_size = s; }
private:
QString m_name;
int m_size;
};
} // MyNamespace
#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 *)&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
}
}