Qt官方示例-QML扩展对象
- 2020 年 2 月 24 日
- 筆記
❝该示例展示如何使用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引擎将无法访问它们」。
关于更多
- 在「QtCreator软件」可以找到:

- 或在以下「Qt安装目录」找到:
C:Qt{你的Qt版本}Examples{你的Qt版本}qmlreferenceexamplesextended
- 「相关链接」
https://doc.qt.io/qt-5/qtqml-referenceexamples-extended-example.html