QExtensionFactory Class

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

헤더: #include <QExtensionFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer
상속합니다: QObjectQAbstractExtensionFactory

공용 함수

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 Designerextension manager 을 사용하여 등록해야 합니다.

QExtensionManager 클래스는 Qt Widgets Designer 에 대한 확장 관리 기능을 제공합니다. 확장이 필요한 경우 Qt Designerextension 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 클래스를 사용하는 전체 예는 작업 메뉴 확장 예제를 참조하세요. 이 예에서는 Qt Designer 에 대한 사용자 지정 위젯 플러그인을 만드는 방법과 QDesignerTaskMenuExtension 클래스를 사용하여 Qt Widgets Designer 의 작업 메뉴에 사용자 지정 항목을 추가하는 방법을 보여 줍니다.

QExtensionManagerQAbstractExtensionFactory참조하세요 .

멤버 함수 문서

[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 *객체, const QString &iid) const.

지정된 object 에 대해 iid 에 지정된 확장자를 반환합니다.

createExtension()도 참조하십시오 .

QExtensionManager *QExtensionFactory::extensionManager() const

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

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