QExtensionFactory Class
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 |
再実装されたパブリック関数
virtual QObject * | extension(QObject *object, const QString &iid) const override |
保護された関数
virtual QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
詳細説明
Qt Widgets Designerでは、エクステンションは必要になるまで作成されません。そのため、カスタム拡張機能を実装する場合は、QExtensionFactory、つまり拡張機能のインスタンスを作成できるクラスを作成し、Qt Widgets Designerのextension manager を使用して登録する必要があります。
QExtensionManager クラスはQt Widgets Designer の拡張機能管理機能を提供します。拡張機能が必要な場合、Qt Designer'のextension manager は、選択されたオブジェクトに対して要求された拡張機能を作成できる最初のファクトリが見つかるまで、登録されたすべてのファクトリに対してQExtensionFactory::createExtension() を呼び出します。このファクトリーがエクステンションのインスタンスを作成します。
Qt Widgets Designerには4種類のエクステンションがあります: 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 クラスを使用した完全な例については、Task Menu Extension の例を参照してください。この例では、Qt Designer のカスタムウィジェットプラグインを作成する方法と、QDesignerTaskMenuExtension クラスを使用してQt Widgets Designer のタスクメニューにカスタム項目を追加する方法を示します。
QExtensionManager およびQAbstractExtensionFactoryも参照して ください。
メンバ関数のドキュメント
[explicit]
QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)
与えられたparent で拡張ファクトリーを構築します。
[virtual protected]
QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
与えられたobject に対してiid で指定された拡張機能を作成します。拡張子オブジェクトは、指定されたparent の子として作成されます。
extension()も参照ください 。
[override virtual]
QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const
再実装:QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const.
与えられたobject に対してiid で指定された拡張子を返します。
createExtension()も参照してください 。
QExtensionManager *QExtensionFactory::extensionManager() const
拡張機能ファクトリの拡張機能マネージャを返します。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.