Qt 5.9 | Qt QML | Qt QML Examples | Extending QML - Extension Objects Example

Qt 5.9.9 Reference Documentation

# Extending QML - Extension Objects Example

This example builds on:

- Extending QML - Adding Types Example

Shows how to use qmlRegisterExtendedType() to provide an extension object to a QLineEdit without modifying or subclassing it.

Firstly, the LineEditExtension class is registered with the QML system as an extension of QLineEdit:

          qmlRegisterExtendedType<QLineEdit, LineEditExtension>("People", 1,0, "QLineEdit");

The QML engine then instantiates a QLineEdit:

          QQmlEngine engine;
          QQmlComponent component(&engine, QUrl("qrc:example.qml"));
          QLineEdit *edit = qobject_cast<QLineEdit *>(component.create());

In QML, a property is set on the line edit that only exists in the LineEditExtension class:

      QLineEdit {
          leftMargin: 20
      }

The extension type performs calls on the QLineEdit that otherwise will not be accessible to the QML engine.

Files:

- referenceexamples/extended/example.qml
- referenceexamples/extended/lineedit.cpp
- referenceexamples/extended/lineedit.h
- referenceexamples/extended/main.cpp
- referenceexamples/extended/extended.pro
- referenceexamples/extended/extended.qrc