IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Extending QML - Extension Objects Example

Extension Objects.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Extending QML - Extension Objects Example

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.

 
Sélectionnez
struct QLineEditForeign
{
    Q_GADGET
    QML_FOREIGN(QLineEdit)
    QML_NAMED_ELEMENT(QLineEdit)
    QML_EXTENDED(LineEditExtension)
};

Note the usage of QML_NAMED_ELEMENT() instead of QML_ELEMENT. QML_ELEMENT uses the name of the containing type by default, "LineEditExtension" in this case. As the class being an extension class is an implementation detail, we choose the more natural name "LineEdit" instead

The QML engine then instantiates a QLineEdit:

 
Sélectionnez
    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:

 
Sélectionnez
QLineEdit {
    leftMargin: 20
}

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

Example project

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+