Extending QML
Thus far, what we did was exposing to QML single objects created and initialized in C++. But we can do much more–the framework allows us to define new QML types. These can either be generic QObject
derived QML elements or items specialized for Qt Quick. In this section, you will learn to do both.
Registering classes as QML elements
We will start with something simple–exposing the CarInfo
type to QML so that instead of instantiating it in C++ and then exposing it in QML, we can directly declare the element in QML and still allow the changes made to the widget to be reflected in the scene.
To make a certain class (derived from QObject
) instantiable in QML, all that is required is to register that class with the declarative engine using the qmlRegisterType
template function. This function takes the class as its template parameter along a number of function arguments: the module uri
, the major and minor version numbers, and the name of the QML type we are registering...