Chapter 7: In Summary

In this tutorial, we've shown the basic steps for creating a QML extension:

  • Define new QML types by subclassing QObject and registering them with qmlRegisterType()
  • Add callable methods using Q_INVOKABLE or Qt slots, and connect to Qt signals with an onSignal syntax
  • Add property bindings by defining NOTIFY signals
  • Define custom property types if the built-in types are not sufficient
  • Define list property types using QQmlListProperty
  • Create a plugin library by defining a Qt plugin and writing a qmldir file

The Integrating QML and C++ documentation shows other useful features that can be added to QML extensions. For example, we could use default properties to allow slices to be added without using the slices property:

PieChart {
    PieSlice { ... }
    PieSlice { ... }
    PieSlice { ... }
}

Or randomly add and remove slices from time to time using property value sources:

PieChart {
    PieSliceRandomizer on slices {}
}

See the Integrating QML and C++ documentation for more information.