Extending QML - Extension Objects Example

This example builds on:

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:

© 2019 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.