QDesignerMemberSheetExtension Class
QDesignerMemberSheetExtension クラスを使用すると、Qt Widgets Designer のシグナルおよびスロット編集モードで接続を設定する際に表示されるウィジェットのメンバ関数を操作することができます。詳細...
| ヘッダー: | #include <QDesignerMemberSheetExtension> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
パブリック関数
| QDesignerMemberSheetExtension() | |
| QDesignerMemberSheetExtension(const QDesignerMemberSheetExtension &) | |
| QDesignerMemberSheetExtension(QDesignerMemberSheetExtension &&) | |
| virtual | ~QDesignerMemberSheetExtension() |
| virtual int | count() const = 0 |
| virtual QString | declaredInClass(int index) const = 0 |
| virtual int | indexOf(const QString &name) const = 0 |
| virtual bool | inheritedFromWidget(int index) const = 0 |
| virtual bool | isSignal(int index) const = 0 |
| virtual bool | isSlot(int index) const = 0 |
| virtual bool | isVisible(int index) const = 0 |
| virtual QString | memberGroup(int index) const = 0 |
| virtual QString | memberName(int index) const = 0 |
| virtual QList<QByteArray> | parameterNames(int index) const = 0 |
| virtual QList<QByteArray> | parameterTypes(int index) const = 0 |
| virtual void | setMemberGroup(int index, const QString &group) = 0 |
| virtual void | setVisible(int index, bool visible) = 0 |
| virtual QString | signature(int index) const = 0 |
| QDesignerMemberSheetExtension & | operator=(QDesignerMemberSheetExtension &&) |
| QDesignerMemberSheetExtension & | operator=(const QDesignerMemberSheetExtension &) |
詳細な説明
QDesignerMemberSheetExtension は、主にウィジェットのメンバ関数を照会したり、Qt Widgets Designer のシグナルおよびスロット編集モードにおけるメンバ関数の表示を操作したりするために使用される関数の集合です。例えば:
QDesignerMemberSheetExtension *memberSheet = nullptr;
QExtensionManager manager = formEditor->extensionManager();
memberSheet = qt_extension<QDesignerMemberSheetExtension*>(manager, widget);
int index = memberSheet->indexOf(setEchoMode);
memberSheet->setVisible(index, false);
delete memberSheet;カスタムウィジェットプラグインを実装する際、Qt Widgets Designer の現在のQDesignerFormEditorInterface オブジェクト(上記の例ではformEditor )へのポインタが、QDesignerCustomWidgetInterface::initialize()関数のパラメータとして提供されます。
メンバーシート(およびその他の拡張機能)は、qt_extension() 関数を使用してQt Widgets Designer の拡張機能マネージャーにクエリを実行することで取得できます。拡張機能を解放したい場合は、ポインタを削除するだけで済みます。
すべてのウィジェットには、Qt Widgets Designer のシグナル・スロット編集モードでウィジェットのメンバ関数とともに使用されるデフォルトのメンバシートがあります。しかし、QDesignerMemberSheetExtensionは、カスタムメンバシート拡張機能を作成するためのインターフェースも提供しています。
警告: ` Qt Widgets Designer ` は、シグナルおよびスロットの編集モードを容易にするために `QDesignerMemberSheetExtension` を使用します。2 つのウィジェット間の接続が要求されるたびに、Qt Widgets Designer はウィジェットのメンバシート拡張機能を照会します。ウィジェットに実装済みのメンバシート拡張機能がある場合、その拡張機能がデフォルトのメンバシートを上書きします。
メンバーシート拡張機能を作成するには、拡張クラスがQObject とQDesignerMemberSheetExtensionの両方を継承している必要があります。また、インターフェースを実装しているため、Q_INTERFACES()マクロを使用して、その存在をメタオブジェクトシステムに通知する必要があります:
class MyMemberSheetExtension : public QObject,
public QDesignerMemberSheetExtension
{
Q_OBJECT
Q_INTERFACES(QDesignerMemberSheetExtension)
public:
...
}これにより、Qt Widgets Designer はqobject_cast()を使用して、QObject ポインタのみを基に、サポートされているインターフェースを照会できるようになります。
Qt Widgets Designer では、拡張機能は必要とされるまで作成されません。そのため、メンバーシート拡張機能を実装する際には、QExtensionFactory 、つまり拡張機能のインスタンスを作成できるクラスも作成し、Qt Widgets Designer のextension manager を使用して登録する必要があります。
ウィジェットのメンバーシート拡張機能が要求されると、Qt Widgets Designer のextension manager は、登録されているすべてのファクトリを順に処理し、それぞれに対してQExtensionFactory::createExtension()を呼び出し、そのウィジェットのメンバーシート拡張機能を作成できる最初のファクトリが見つかるまで続けます。その後、そのファクトリが拡張機能のインスタンスを作成します。そのようなファクトリが見つからない場合、Qt Widgets Designer はデフォルトのメンバーシートを使用します。
Qt Widgets Designer では、QDesignerContainerExtension 、QDesignerMemberSheetExtension、QDesignerPropertySheetExtension 、QDesignerTaskMenuExtension の 4 種類の拡張が利用可能です。Qt Widgets Designer の動作は、要求された拡張がマルチページコンテナ、メンバーシート、プロパティシート、またはタスクメニューのいずれに関連付けられているかに関係なく同じです。
QExtensionFactory クラスは標準の拡張機能ファクトリを提供しており、カスタム拡張機能ファクトリのインターフェースとしても使用できます。新しいQExtensionFactory を作成し、QExtensionFactory::createExtension()関数を再実装することも可能です。例:
QObject *ANewExtensionFactory::createExtension(QObject *object,
const QString &iid, QObject *parent) const
{
if (iid != Q_TYPEID(QDesignerMemberSheetExtension))
return 0;
if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
(object))
return new MyMemberSheetExtension(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(QDesignerTaskMenuExtension))) {
return new MyTaskMenuExtension(widget, parent);
} else if (widget && (iid == Q_TYPEID(QDesignerMemberSheetExtension))) {
return new MyMemberSheetExtension(widget, parent);
} else {
return 0;
}
}拡張クラスを使用した完全な例については、「タスクメニュー拡張の例」を参照してください。この例では、Qt Designer 用のカスタムウィジェットプラグインの作成方法と、QDesignerTaskMenuExtension クラスを使用してQt Widgets Designer のタスクメニューにカスタム項目を追加する方法を示しています。
「 QExtensionFactory」 、「QExtensionManager 」、および「カスタムウィジェット拡張機能の作成」も参照してください 。
メンバ関数のドキュメント
[constexpr noexcept default] QDesignerMemberSheetExtension::QDesignerMemberSheetExtension()
QDesignerMemberSheetExtension のインスタンスをデフォルトコンストラクタで生成します。
[delete] QDesignerMemberSheetExtension::QDesignerMemberSheetExtension(const QDesignerMemberSheetExtension &)
QDesignerMemberSheetExtension のインスタンスをコピーして生成します。この関数は削除されています。
[delete] QDesignerMemberSheetExtension::QDesignerMemberSheetExtension(QDesignerMemberSheetExtension &&)
QDesignerMemberSheetExtension のインスタンスをMoveコンストラクタで生成します。この関数は削除されています。
[virtual constexpr noexcept default] QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
メンバーシート拡張機能を削除します。
[pure virtual] int QDesignerMemberSheetExtension::count() const
その拡張機能のメンバ関数の数を返します。
[pure virtual] QString QDesignerMemberSheetExtension::declaredInClass(int index) const
指定されたindex を持つメンバ関数が宣言されているクラスの名前を返します。
indexOf()も参照してください 。
[pure virtual] int QDesignerMemberSheetExtension::indexOf(const QString &name) const
指定されたname で指定されたメンバ関数のインデックスを返します。
memberName()も参照してください 。
[pure virtual] bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
指定されたindex を持つメンバ関数がQWidget から継承されている場合はtrueを返し、そうでない場合はfalseを返します。
indexOf()も参照してください 。
[pure virtual] bool QDesignerMemberSheetExtension::isSignal(int index) const
指定されたindex を持つメンバ関数がシグナルである場合はtrueを返し、そうでない場合はfalseを返します。
indexOf()も参照してください 。
[pure virtual] bool QDesignerMemberSheetExtension::isSlot(int index) const
指定されたindex を持つメンバ関数がスロットである場合はtrueを返し、そうでない場合はfalseを返します。
indexOf()も参照してください 。
[pure virtual] bool QDesignerMemberSheetExtension::isVisible(int index) const
指定されたindex を持つメンバ関数が、Qt Widgets Designer のシグナル・スロットエディタで表示される場合はtrueを返し、そうでない場合はfalseを返します。
indexOf() およびsetVisible()も参照してください 。
[pure virtual] QString QDesignerMemberSheetExtension::memberGroup(int index) const
指定されたindex を持つ関数に対して指定されたメンバグループの名前を返します。
indexOf() およびsetMemberGroup()も参照してください 。
[pure virtual] QString QDesignerMemberSheetExtension::memberName(int index) const
指定されたindex を持つメンバ関数の名前を返します。
indexOf()も参照してください 。
[pure virtual] QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
指定されたindex を持つメンバ関数のパラメータ名を、QByteArray リストとして返します。
indexOf() およびparameterTypes()も参照してください 。
[pure virtual] QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
指定されたindex を持つメンバ関数のパラメータ型を、QByteArray リストとして返します。
indexOf() およびparameterNames()も参照してください 。
[pure virtual] void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
指定されたindex を持つメンバ関数のメンバグループを、group に設定します。
indexOf() およびmemberGroup()も参照してください 。
[pure virtual] void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
visible がtrueの場合、指定されたindex を持つメンバ関数は、Qt Widgets Designer のシグナルおよびスロット編集モードで表示されます。そうでない場合、そのメンバ関数は非表示になります。
indexOf() およびisVisible()も参照してください 。
[pure virtual] QString QDesignerMemberSheetExtension::signature(int index) const
指定されたindex を持つメンバ関数のシグネチャを返します。
indexOf()も参照してください 。
[delete] QDesignerMemberSheetExtension &QDesignerMemberSheetExtension::operator=(QDesignerMemberSheetExtension &&)
other をこのQDesignerMemberSheetExtension インスタンスに割り当てます。この関数は削除されます。
[delete] QDesignerMemberSheetExtension &QDesignerMemberSheetExtension::operator=(const QDesignerMemberSheetExtension &)
other をこのQDesignerMemberSheetExtension インスタンスにコピー・代入します。この関数は削除されます。
© 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.