QDesignerTaskMenuExtension Class
QDesignerTaskMenuExtension クラスを使用すると、Qt Widgets Designer のタスクメニューにカスタムメニュー項目を追加できます。詳細...
ヘッダー | #include <QDesignerTaskMenuExtension> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
パブリック関数
virtual | ~QDesignerTaskMenuExtension() |
virtual QAction * | preferredEditAction() const |
virtual QList<QAction *> | taskActions() const = 0 |
詳細説明
QDesignerTaskMenuExtensionは、カスタムタスクメニュー拡張を作成するためのインターフェイスを提供します。通常、Qt Widgets Designerのプラグインに固有のタスクメニューエントリを作成するために使用されます。
Qt Widgets DesignerはQDesignerTaskMenuExtensionを使用してタスクメニューをフィードします。タスクメニューが要求されるたびに、 Designerは選択されたウィジェットのタスクメニュー拡張子を照会します。Qt Widgets
タスクメニュー拡張はQActionsのコレクションです。指定された拡張機能を持つプラグインが選択されると、アクションはタスクメニューのエントリとして表示されます。上の画像は、Qt Widgets Designerのデフォルトのタスクメニューエントリに加えて表示されるカスタムEdit State...アクションを示しています:Cut、Copy、Pasteなど。
カスタムタスクメニューエクステンションを作成するには、エクステンションクラスをQObject と QDesignerTaskMenuExtension の両方から継承する必要があります。例えば
class MyTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: MyTaskMenuExtension(MyCustomWidget *widget, QObject *parent); QAction *preferredEditAction() const; QList<QAction *> taskActions() const; private slots: void mySlot(); private: MyCustomWidget *widget; QAction *myAction; };
インターフェイスを実装しているため、Q_INTERFACES ()マクロを使用してメタオブジェクトシステムに確実に知らせる必要があります。これにより、Qt Widgets Designer はqobject_cast() 関数を使用して、QObject ポインタのみを使用してサポートされているインターフェイスを照会できます。
Qt Widgets Designer タスク メニューに含まれるアクションのリストを返すには、taskActions() 関数を再実装する必要があります。オプションで、preferredEditAction() 関数を再実装して、プラグインを選択してF2 キーを押したときに呼び出されるアクションを設定できます。優先編集アクションはtaskActions() が返すアクションの1つである必要があり、定義されていない場合、F2キーを押しても無視されます。
Qt Widgets Designerでは、拡張機能は必要になるまで作成されません。たとえば、タスクメニューの拡張機能は、Qt Widgets Designerのワークスペースのウィジェット上でマウスの右ボタンをクリックしたときに作成されます。そのため、QExtensionFactory またはサブクラスを使用してエクステンションファクトリを構築し、Qt Widgets Designer のextension manager を使用して登録する必要があります。
タスクメニュー拡張が必要になると、Qt Widgets Designer のextension manager は、選択したウィジェットのタスクメニュー拡張を作成できるファクトリが見つかるまで、登録されているすべてのファクトリに対してQExtensionFactory::createExtension() を呼び出します。このファクトリーはエクステンションのインスタンスを作成します。
Qt Widgets Designerでは、4種類のエクステンションが利用できます:QDesignerContainerExtension QDesignerMemberSheetExtension,QDesignerPropertySheetExtension, そして QDesignerTaskMenuExtension です。 Qt Widgets Designerの動作は、要求されたエクステンションがコンテナ、メンバシート、プロパティシート、タスクメニューのいずれに関連付けられていても同じです。
QExtensionFactory クラスは標準の拡張機能ファクトリを提供し、カスタム拡張機能ファクトリのインターフェイスとしても使用できます。新しいQExtensionFactory を作成し、QExtensionFactory::createExtension() 関数を再実装することができます。例えば
QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerTaskMenuExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object)) return new MyTaskMenuExtension(widget, parent); return 0; }
または、既存のファクトリーを使用し、QExtensionFactory::createExtension() 関数を拡張して、タスクメニュー拡張機能も作成できるようにすることもできます。例えば
QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else { return 0; } }
QDesignerTaskMenuExtensionクラスを使用した完全な例については、Task Menu Extensionの例を参照してください。この例では、Qt Widgets Designer用のカスタムウィジェットプラグインを作成する方法と、QDesignerTaskMenuExtensionクラスを使用してQt Widgets Designerのタスクメニューにカスタム項目を追加する方法を示します。
QExtensionFactory 、QExtensionManager 、およびカスタムウィジェット拡張機能の作成も参照してください 。
メンバ関数のドキュメント
[virtual noexcept]
QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
タスクメニュー拡張を破棄する。
[virtual]
QAction *QDesignerTaskMenuExtension::preferredEditAction() const
指定した拡張子のプラグインを選択してF2 キーを押したときに呼び出されるアクションを返します。
アクションはtaskActions() が返すアクションのいずれかでなければなりません。
[pure virtual]
QList<QAction *> QDesignerTaskMenuExtension::taskActions() const
指定された拡張子を持つプラグインが選択されたときにQt Widgets Designer のタスクメニューに含まれるアクションのリストとしてタスクメニュー拡張子を返します。
リストにアクションを追加するには、この関数を再実装する必要があります。
© 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.