이 페이지에서

QExtensionFactory Class

QExtensionFactory 클래스를 사용하면 Qt Designer 에서 사용자 정의 확장 기능의 인스턴스를 생성할 수 있는 팩토리를 만들 수 있습니다. 더 보기...

헤더: #include <QExtensionFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer
상속:QObject 그리고 QAbstractExtensionFactory

공개 함수

QExtensionFactory(QExtensionManager *parent = nullptr)
QExtensionManager *extensionManager() const

재구현된 공용 함수

virtual QObject *extension(QObject *object, const QString &iid) const override

보호된 함수

virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const

상세 설명

Qt Widgets Designer 에서는 확장 기능이 필요할 때까지 생성되지 않습니다. 따라서 사용자 정의 확장 기능을 구현할 때는 QExtensionFactory, 즉 확장 기능의 인스턴스를 생성할 수 있는 클래스를 만들어야 하며, Qt Widgets Designer 의 extension manager 를 사용하여 등록해야 합니다.

QExtensionManager 클래스는 Qt Widgets Designer 에 대한 확장 기능 관리 기능을 제공합니다. 확장 기능이 필요할 때, Qt Designer 의 extension manager 는 등록된 모든 팩토리를 순차적으로 검사하며, 각 팩토리에 대해 QExtensionFactory::createExtension()를 호출하여 선택된 객체에 대해 요청된 확장 기능을 생성할 수 있는 첫 번째 팩토리를 찾을 때까지 이 과정을 반복합니다. 이 팩토리는 이후 해당 확장 기능의 인스턴스를 생성합니다.

Qt Widgets Designer 에는 QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension 및 QDesignerTaskMenuExtension 의 네 가지 확장 유형이 있습니다. Qt Designer 의 동작은 요청된 확장이 다중 페이지 컨테이너, 멤버 시트, 속성 시트 또는 작업 메뉴와 연관되어 있든 상관없이 동일합니다.

새로운 QExtensionFactory를 생성하고 QExtensionFactory::createExtension() 함수를 재구현할 수 있습니다. 예를 들면 다음과 같습니다:

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

            if (auto *widget = qobject_cast<MyCustomWidget*>(object))
                return new MyContainerExtension(widget, parent);

            return nullptr;
        }

또는 기존 팩토리를 사용하여 QExtensionFactory::createExtension() 함수를 확장함으로써, 해당 팩토리가 사용자 정의 확장도 생성할 수 있도록 할 수 있습니다. 예를 들면 다음과 같습니다:

        QObject *AGeneralExtensionFactory::createExtension(QObject *object,
                const QString &iid, QObject *parent) const
        {
            auto *widget = qobject_cast<MyCustomWidget*>(object);
            if (!widget)
                return nullptr;

            if (iid == Q_TYPEID(QDesignerTaskMenuExtension))
                return new MyTaskMenuExtension(widget, parent);

            if (iid == Q_TYPEID(QDesignerContainerExtension))
                return new MyContainerExtension(widget, parent);

            return nullptr;
        }

QExtensionFactory 클래스를 사용한 전체 예제는 ‘작업 메뉴 확장(Task Menu Extension)’ 예제를 참조하십시오. 이 예제는 Qt Designer 에 대한 사용자 정의 위젯 플러그인을 생성하는 방법과, QDesignerTaskMenuExtension 클래스를 사용하여 Qt Widgets Designer 의 작업 메뉴에 사용자 정의 항목을 추가하는 방법을 보여줍니다.

QExtensionManager 및 QAbstractExtensionFactory도 참조하십시오 .

멤버 함수 문서

[explicit] QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)

주어진 ` parent`를 사용하여 확장 팩토리를 생성합니다.

[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const

지정된 object 에 대해 iid 로 지정된 확장 기능을 생성합니다. 확장 객체는 지정된 parent 의 자식 객체로 생성됩니다.

extension()도 참조하십시오 .

[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const

QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const를 재구현합니다.

주어진 ` object`에 대해 ` iid `로 지정된 확장자를 반환합니다.

createExtension()도 참조하십시오 .

QExtensionManager *QExtensionFactory::extensionManager() const

확장 기능 팩토리의 확장 기능 관리자를 반환합니다.

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