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 では、QDesignerContainerExtension 、QDesignerMemberSheetExtension 、QDesignerPropertySheetExtension 、QDesignerTaskMenuExtension の 4 種類の拡張機能が利用可能です。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 Widgets Designer のタスクメニューにカスタム項目を追加する方法を示しています。
QExtensionManager およびQAbstractExtensionFactoryも参照してください 。
メンバ関数のドキュメント
[explicit] QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)
指定されたparent を使用して、拡張機能ファクトリを構築します。
[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
指定された `iid ` で定義された拡張機能を、指定された `object` に対して作成します。この拡張機能オブジェクトは、指定された `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
その拡張機能ファクトリに対応する拡張機能マネージャーを返します。
© 2026 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.