QDesignerMemberSheetExtension Class

QDesignerMemberSheetExtensionクラスを使用すると、Qt Widgets Designerのシグナルとスロットの編集モードを使用して接続を設定するときに表示されるウィジェットのメンバー関数を操作することができます。詳細...

Header: #include <QDesignerMemberSheetExtension>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer

パブリック関数

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は、通常、ウィジェットのメンバ関数を照会し、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で使用可能な拡張機能は4種類あります:QDesignerContainerExtensionQDesignerMemberSheetExtension、QDesignerPropertySheetExtensionQDesignerTaskMenuExtension 。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;
    }
}

拡張クラスを使用した完全な例については、Task Menu Extension example を参照してください。この例では、Qt Designer 用のカスタムウィジェットプラグインを作成する方法と、QDesignerTaskMenuExtension クラスを使用して Qt Widgets Designer のタスクメニューにカスタム項目を追加する方法を示します。

QExtensionFactoryQExtensionManagerCreating Custom Widget Extensionsも参照して ください。

メンバー関数 ドキュメント

[virtual constexpr noexcept] 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 を持つメンバ関数がスロットの場合は真を、そうでない場合は偽を返します。

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()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。