Extending QML with a C++ class in a namespace: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
m (EdwardWelbourne moved page Extending QML with a C class in a namespace to Extending QML with a C++ class in a namespace: Wrong language name) |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{LangSwitch}} | |||
[[Category:Snippets::QML]] | |||
The example code below shows how you can extend QML with a C++ class in a custom namespace. | |||
main.cpp | |||
<code> | |||
#include <QtGui> | |||
#include <QtDeclarative> | |||
main. | 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(); | |||
} | |||
</code> | |||
main.qml | main.qml | ||
<code> | |||
import QtQuick 1.0 | |||
import People 1.0 | |||
Text { | |||
text: myPerson.name | |||
Person { | |||
id: myPerson | |||
name: "Sigurd" | |||
shoeSize: 24 | |||
} | |||
} | |||
</code> |
Latest revision as of 12:33, 28 November 2016
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
}
}