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을 사용합니다. 두 위젯 간의 연결이 요청될 때마다 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 Designerextension manager 를 사용하여 등록해야 합니다.

위젯의 멤버 시트 확장이 필요한 경우 Qt Widgets Designerextension manager 은 해당 위젯의 멤버 시트 확장을 만들 수 있는 첫 번째 팩토리를 찾을 때까지 등록된 모든 팩토리를 각각 QExtensionFactory::createExtension()을 호출하여 실행합니다. 그런 다음 이 팩토리가 확장 프로그램의 인스턴스를 만듭니다. 그러한 팩토리를 찾을 수 없는 경우 Qt Widgets Designer 은 기본 멤버 시트를 사용합니다.

Qt Widgets Designer 에는 네 가지 유형의 확장을 사용할 수 있습니다: QDesignerContainerExtension, QDesignerMemberSheetExtension, 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;
    }
}

확장 클래스를 사용하는 전체 예는 작업 메뉴 확장 예제를 참조하세요. 이 예에서는 Qt Designer 에 대한 사용자 지정 위젯 플러그인을 만드는 방법과 QDesignerTaskMenuExtension 클래스를 사용하여 Qt Widgets Designer 의 작업 메뉴에 사용자 지정 항목을 추가하는 방법을 보여 줍니다.

QExtensionFactory, QExtensionManager, 및 사용자 정의 위젯 확장 만들기 를참조하세요 .

멤버 함수 문서

[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 에서 상속된 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf()도 참조하세요 .

[pure virtual] bool QDesignerMemberSheetExtension::isSignal(int index) const

지정된 index 의 멤버 함수가 신호인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf()도 참조하세요 .

[pure virtual] bool QDesignerMemberSheetExtension::isSlot(int index) const

지정된 index 을 가진 멤버 함수가 슬롯이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf()도 참조하세요 .

[pure virtual] bool QDesignerMemberSheetExtension::isVisible(int index) const

Qt Widgets Designer 의 신호 및 슬롯 편집기에 지정된 index 의 멤버 함수가 표시되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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 이 참이면 지정된 index 을 가진 멤버 함수가 Qt Widgets Designer 의 신호 및 슬롯 편집 모드에 표시되고, 그렇지 않으면 멤버 함수가 숨겨집니다.

indexOf() 및 isVisible()도 참조하세요 .

[pure virtual] QString QDesignerMemberSheetExtension::signature(int index) const

주어진 index 을 사용하여 멤버 함수의 서명을 반환합니다.

indexOf()도 참조하세요 .

© 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.