Time for action – grouping engine properties
QML has a concept called grouped properties. These are properties of an object that contain a group of "sub-properties." You already know a number of them–the border property of the Rectangle
element or the anchors property of the Item
element, for example. Let's see how to define such properties for our exposed object.
Create a new QObject
-derived class and call it CarInfoEngine
. Move the property definitions of rpm and gear to that new class.Add
the following property declaration to CarInfo
:
Q_PROPERTY(Object* engine READ engine NOTIFY engineChanged)
Implement the getter and the private field:
QObject* engine() const { return m_engine; } private: CarInfoEngine *m_engine;
We are not going to use the signal right now; however, we had to declare it otherwise QML would complain we were binding expressions that depend on properties that are non-notifiable:
signals: void engineChanged();
Initialize m_engine
in the...