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