QDesignerPropertySheetExtension Class

QDesignerPropertySheetExtension 클래스를 사용하면 Qt Designer 의 속성 편집기에 표시되는 위젯의 속성을 조작할 수 있습니다. 더 보기...

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

공용 함수

virtual ~QDesignerPropertySheetExtension()
virtual int count() const = 0
virtual bool hasReset(int index) const = 0
virtual int indexOf(const QString &name) const = 0
virtual bool isAttribute(int index) const = 0
virtual bool isChanged(int index) const = 0
virtual bool isEnabled(int index) const = 0
virtual bool isVisible(int index) const = 0
virtual QVariant property(int index) const = 0
virtual QString propertyGroup(int index) const = 0
virtual QString propertyName(int index) const = 0
virtual bool reset(int index) = 0
virtual void setAttribute(int index, bool attribute) = 0
virtual void setChanged(int index, bool changed) = 0
virtual void setProperty(int index, const QVariant &value) = 0
virtual void setPropertyGroup(int index, const QString &group) = 0
virtual void setVisible(int index, bool visible) = 0

상세 설명

QDesignerPropertySheetExtension은 일반적으로 위젯의 속성을 쿼리하고 속성 편집기에서 속성의 모양을 조작하는 데 사용되는 함수 모음을 제공합니다. 예를 들어

QDesignerPropertySheetExtension *propertySheet = nullptr;
QExtensionManager manager = formEditor->extensionManager();

propertySheet = qt_extension<QDesignerPropertySheetExtension*>(manager, widget);
int index = propertySheet->indexOf(u"margin"_s);

propertySheet->setProperty(index, 10);
propertySheet->setChanged(index, true);

delete propertySheet;

QDesignerPropertySheetExtension::setProperty() 함수를 사용하여 속성 값을 변경하는 경우 실행 취소 스택은 업데이트되지 않습니다. 실행 취소 스택을 사용하여 속성 값을 되돌리려면 QDesignerFormWindowCursorInterface::setProperty() 함수 또는 그 버디인 setWidgetProperty() 함수를 사용해야 합니다.

사용자 정의 위젯 플러그인을 구현할 때 Qt Widgets Designer 의 현재 QDesignerFormEditorInterface 객체(위 예에서는formEditor )에 대한 포인터가 QDesignerCustomWidgetInterface::initialize() 함수의 매개 변수로 제공됩니다.

속성 시트 또는 다른 확장은 qt_extension() 함수를 사용하여 Qt Widgets Designer 의 확장 관리자를 쿼리하여 검색할 수 있습니다. 확장을 해제하려면 포인터를 삭제하기만 하면 됩니다.

모든 위젯에는 위젯의 속성(즉, Q_PROPERTY() 매크로로 정의된 속성)으로 Qt Widgets Designer 의 속성 편집기를 채우는 기본 속성 시트가 있습니다. 그러나 QDesignerPropertySheetExtension은 사용자 지정 속성 시트 확장을 만들기 위한 인터페이스도 제공합니다.

다음 제한 사항에 유의하십시오:

  • Qt Widgets Designer 는 QDesignerPropertySheetExtension을 사용하여 속성 편집기를 공급합니다. 작업 공간에서 위젯을 선택할 때마다 Qt Widgets Designer 에서 위젯의 속성 시트 확장을 쿼리합니다. 선택한 위젯에 구현된 속성 시트 확장이 있는 경우 이 확장이 기본 속성 시트를 재정의합니다.
  • 일부 속성에 대해 속성 시트에서 사용하는 데이터 유형은 일반 Qt 데이터 유형 대신 추가 정보를 포함하는 불투명한 사용자 정의 QVariant 유형입니다. 예를 들어 열거형, 플래그, 아이콘, 픽스맵 및 문자열이 이에 해당합니다.
  • Qt Widgets Designer의 속성 편집기에는 Q_DECLARE_METATYPE()로 선언된 사용자 정의 유형에 대한 Q_PROPERTY 유형을 처리하는 구현이 없습니다.

속성 시트 확장을 만들려면 확장 클래스가 QObject 및 QDesignerPropertySheetExtension 모두에서 상속해야 합니다. 그런 다음 인터페이스를 구현하고 있으므로 Q_INTERFACES() 매크로를 사용하여 메타 객체 시스템에 인터페이스를 알려야 합니다:

class MyPropertySheetExtension : public QObject,
        public QDesignerPropertySheetExtension
{
    Q_OBJECT
    Q_INTERFACES(QDesignerPropertySheetExtension)

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, QDesignerPropertySheetExtension 및 QDesignerTaskMenuExtension. Qt Designer 의 동작은 요청된 확장이 다중 페이지 컨테이너, 멤버 시트, 속성 시트 또는 작업 메뉴와 연관되어 있는지 여부에 관계없이 동일합니다.

QExtensionFactory 클래스는 표준 확장팩토리를 제공하며 사용자 지정 확장팩토리를 위한 인터페이스로도 사용할 수 있습니다. QExtensionFactory 을 새로 만들고 QExtensionFactory::createExtension() 함수를 다시 구현할 수 있습니다. 예를 들어

QObject *ANewExtensionFactory::createExtension(QObject *object,
        const QString &iid, QObject *parent) const
{
    if (iid != Q_TYPEID(QDesignerPropertySheetExtension))
        return 0;

    if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
           (object))
        return new MyPropertySheetExtension(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(QDesignerPropertySheetExtension))) {
        return new MyPropertySheetExtension(widget, parent);

    } else {
        return 0;
    }
}

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

QDesignerDynamicPropertySheetExtension, QExtensionFactory, QExtensionManager, 그리고 사용자 정의 위젯 확장 프로그램 만들기를참조하세요 .

멤버 함수 문서

[virtual constexpr noexcept] QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()

속성 시트 확장을 삭제합니다.

[pure virtual] int QDesignerPropertySheetExtension::count() const

선택한 위젯의 속성 개수를 반환합니다.

[pure virtual] bool QDesignerPropertySheetExtension::hasReset(int index) const

지정된 index 의 속성에 Qt Widgets Designer 의 속성 편집기에 재설정 버튼이 있는 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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

[pure virtual] int QDesignerPropertySheetExtension::indexOf(const QString &name) const

주어진 속성의 인덱스를 반환합니다 name.

propertyName()도 참조하세요 .

[pure virtual] bool QDesignerPropertySheetExtension::isAttribute(int index) const

지정된 index 의 속성이 UI 파일에서 제외되는 속성인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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

[pure virtual] bool QDesignerPropertySheetExtension::isChanged(int index) const

지정된 index 의 속성 값이 속성의 기본값과 다르면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf(), setChanged() 및 reset()도 참조하세요 .

[pure virtual] bool QDesignerPropertySheetExtension::isEnabled(int index) const

Qt Widgets Designer 의 속성 편집기에서 지정된 index 의 속성이 활성화되어 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf()도 참조하세요 .

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

지정된 index 의 속성이 Qt Widgets Designer 의 속성 편집기에 표시되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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

[pure virtual] QVariant QDesignerPropertySheetExtension::property(int index) const

주어진 index 에서 속성 값을 반환합니다.

indexOf(), setProperty(), propertyGroup()도 참조하세요 .

[pure virtual] QString QDesignerPropertySheetExtension::propertyGroup(int index) const

지정된 index 에 있는 프로퍼티의 프로퍼티 그룹을 반환합니다.

Qt Widgets Designer의 속성 편집기는 속성 그룹, 즉 관련 속성의 섹션을 지원합니다. setPropertyGroup () 함수를 사용하여 프로퍼티를 그룹에 연결할 수 있습니다. 프로퍼티의 기본 그룹은 프로퍼티를 정의하는 클래스의 이름입니다. 예를 들어 QObject::objectName 속성은 QObject 속성 그룹 내에 표시됩니다.

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

[pure virtual] QString QDesignerPropertySheetExtension::propertyName(int index) const

주어진 index 에 있는 속성 이름을 반환합니다.

indexOf()도 참조하세요 .

[pure virtual] bool QDesignerPropertySheetExtension::reset(int index)

지정된 index 에서 속성 값을 기본값으로 재설정합니다. 기본값을 찾을 수 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

indexOf(), hasReset() 및 isChanged()도 참조하세요 .

[pure virtual] void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)

attribute 가 참이면 지정된 index 의 속성이 UI 파일에서 제외되는 속성이 되고, 그렇지 않으면 포함됩니다.

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

[pure virtual] void QDesignerPropertySheetExtension::setChanged(int index, bool changed)

changed 매개변수에 따라 지정된 index 의 속성이 기본값과 다른지 여부를 설정합니다.

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

[pure virtual] void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)

주어진 index 에서 속성의 value 을 설정합니다.

경고: 이 함수를 사용하여 속성 값을 변경하면 실행 취소 스택이 업데이트되지 않습니다. 실행 취소 스택을 사용하여 속성 값을 되돌리려면 QDesignerFormWindowCursorInterface::setProperty() 함수 또는 그 버디인 setWidgetProperty()를 대신 사용해야 합니다.

indexOf(), property() 및 propertyGroup()도 참조하세요 .

[pure virtual] void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)

지정된 index 에 있는 속성의 속성 그룹을 group 으로 설정합니다.

속성을 그룹에 연결하면 속성 편집기에서 해당 그룹의 섹션에 속성이 표시됩니다. 모든 속성의 기본 속성 그룹은 해당 속성을 정의하는 클래스의 이름입니다. 예를 들어 QObject::objectName 속성은 QObject 속성 그룹 내에 표시됩니다.

indexOf(), property() 및 propertyGroup()도 참조하세요 .

[pure virtual] void QDesignerPropertySheetExtension::setVisible(int index, bool visible)

visible 이 참이면 지정된 index 의 속성이 Qt Widgets Designer 의 속성 편집기에 표시되고, 그렇지 않으면 속성이 숨겨집니다.

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

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