Extending QML - Adding Types Example▲
The Adding Types Example shows how to add a new object type, Person, to QML. The Person type can be used from QML like this:
import
People
Person {
name
:
"Bob Jones"
shoeSize
:
12
}
Declare the Person Class▲
All QML types map to C++ types. Here we declare a basic C++ Person class with the two properties we want accessible on the QML type - name and shoeSize. Although in this example we use the same name for the C++ class as the QML type, the C++ class can be named differently, or appear in a namespace.
class
Person : public
QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
Q_PROPERTY(int
shoeSize READ shoeSize WRITE setShoeSize)
QML_ELEMENT
public
:
using
QObject::
QObject;
QString name() const
;
void
setName(const
QString &
amp;);
int
shoeSize() const
;
void
setShoeSize(int
);
private
:
QString m_name;
int
m_shoeSize =
0
;
}
;
Define the Person Class▲
QString Person::
name() const
{
return
m_name;
}
void
Person::
setName(const
QString &
amp;n)
{
m_name =
n;
}
int
Person::
shoeSize() const
{
return
m_shoeSize;
}
void
Person::
setShoeSize(int
s)
{
m_shoeSize =
s;
}
The Person class implementation is quite basic. The property accessors simply return members of the object instance.
Running the Example▲
The main.cpp file in the example includes a simple shell application that loads and runs the QML snippet shown at the beginning of this page.