Extending QML - Extension Objects Example
Extension Objects.
This example builds on:
Shows how to use QML_EXTENDED 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. We declare a foreign type to do this as we cannot modify Qt's internal QLineEdit class.
struct QLineEditForeign { Q_GADGET QML_FOREIGN(QLineEdit) QML_ELEMENT QML_EXTENDED(LineEditExtension) };
The QML engine then instantiates a QLineEdit:
QQmlEngine engine; QQmlComponent component(&engine, QUrl("qrc:example.qml")); auto *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.