QExtensionFactory 类
QExtensionFactory 类允许您在 Qt Designer 中创建一个能够创建自定义扩展实例的工厂。 更多信息...
头文件 | #include <QExtensionFactory> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake | QT += designer |
继承 | QObject 和 QAbstractExtensionFactory |
公共函数
QExtensionFactory(QExtensionManager *parent = nullptr) | |
QExtensionManager * | extensionManager() const |
重 implemented 公共函数
虚拟 QObject * | extension(QObject *object, const QString &iid) const override |
受保护的函数
虚拟 QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
详细描述
在 Qt Designer 中,扩展只有在需要时才创建。因此,在实现自定义扩展时,您还必须创建一个 QExtensionFactory,即一个能够创建您的扩展实例的类,并通过 Qt Designer 的 extension manager 进行注册。
QExtensionManager 类为 Qt Designer 提供了扩展管理功能。当一个扩展需要时,Qt Designer 的 extension manager 将运行其所有已注册的工厂,并对每个 QExtensionFactory::createExtension() 进行调用,直到找到第一个能够为所选对象创建所需扩展的工厂。然后,该工厂将创建一个扩展实例。
在 Qt Designer 中有四种可用的扩展类型:QDesignerContainerExtension , QDesignerMemberSheetExtension,QDesignerPropertySheetExtension 和 QDesignerTaskMenuExtension。无论请求的扩展是与多页容器、成员表单、属性表单还是任务菜单关联,Qt Designer 的行为都是相同的。
您可以选择创建一个新的 QExtensionFactory 并重新实现 QExtensionFactory::createExtension() 函数。例如
QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerContainerExtension)) return nullptr; if (auto *widget = qobject_cast<MyCustomWidget*>(object)) return new MyContainerExtension(widget, parent); return nullptr; }
或者您可以使用现有的工厂,扩展 QExtensionFactory::createExtension() 函数,使工厂能够创建您的扩展。例如
QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { auto *widget = qobject_cast<MyCustomWidget*>(object); if (!widget) return nullptr; if (iid == Q_TYPEID(QDesignerTaskMenuExtension)) return new MyTaskMenuExtension(widget, parent); if (iid == Q_TYPEID(QDesignerContainerExtension)) return new MyContainerExtension(widget, parent); return nullptr; }
关于使用QExtensionFactory类的完整示例,请参阅任务菜单扩展示例。该示例展示了如何为Qt Designer创建自定义小部件插件,以及如何使用QDesignerTaskMenuExtension类向Qt Designer的任务菜单添加自定义项。
另请参阅QExtensionManager和QAbstractExtensionFactory。
成员函数文档
[explicit]
QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)
使用指定的parent构造扩展工厂。
[虚拟受保护]
QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
为给定的object创建指定
另请参阅extension。
[覆盖虚拟]
QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const
重实现了:QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const.
返回指定
另请参阅createExtension。
QExtensionManager *QExtensionFactory::extensionManager() const
返回扩展工厂的扩展管理器。
© 2024 The Qt Company Ltd. 本文档中的贡献文档的版权属于其各自的所有者。本提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3许可的。Qt及其商标是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。