❝该示例展示如何使用qmlRegisterExtendedType()
将扩展对象(LineEditExtension
)提供给QLineEdit,而无需对其进行修改或子类化。❞
首先,将LineEditExtension
类在QML系统中注册为QLineEdit
的扩展:
qmlRegisterExtendedType<QLineEdit, LineEditExtension>("People", 1,0, "QLineEdit");
然后,QML引擎实例化QLineEdit
:
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *edit = qobject_cast<QLineEdit *>(component.create());
最后,在QML中使用LineEditExtension
类中的leftMargin
属性:
QLineEdit { leftMargin:20 }
需要注意的是:「扩展类型在QLineEdit上执行调用,否则QML引擎将无法访问它们」。
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\qml\referenceexamples\extended
https://doc.qt.io/qt-5/qtqml-referenceexamples-extended-example.html