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 | main.cpp | ||
<code> | |||
#include <QtGui> | |||
#include <QtDeclarative> | |||
namespace MyNamespace { | 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 | QString name() const | ||
{ | |||
return m_name; | |||
} | |||
void setName(const QString & n) | |||
{ | |||
m_name = n; | |||
} | |||
int shoeSize() const | int shoeSize() const | ||
{ | |||
return m_size; | |||
} | |||
void setShoeSize(int s) | |||
{ | |||
m_size = s; | |||
} | |||
private: | private: | ||
QString m_name; | |||
int m_size; | |||
}; | |||
} | |||
#include "main.moc" | #include "main.moc" | ||
Line 19: | Line 48: | ||
using namespace MyNamespace; | using namespace MyNamespace; | ||
int main(int argc, char** argv) | 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> | <code> | ||
import QtQuick 1.0 | |||
import People 1.0 | |||
Text { | Text { | ||
text: myPerson.name | |||
Person { | Person { | ||
id: myPerson; | |||
name: "Sigurd" | |||
shoeSize: 24 | |||
} | } | ||
} | |||
</code> |
Revision as of 12:08, 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
#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;
};
}
#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
}
}