QDesignerTaskMenuExtension Class
QDesignerTaskMenuExtension 클래스를 사용하면 Qt Widgets Designer 의 작업 메뉴에 사용자 지정 메뉴 항목을 추가할 수 있습니다. 더 보기...
헤더: | #include <QDesignerTaskMenuExtension> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
공용 함수
virtual | ~QDesignerTaskMenuExtension() |
virtual QAction * | preferredEditAction() const |
virtual QList<QAction *> | taskActions() const = 0 |
상세 설명
QDesignerTaskMenuExtension은 사용자 지정 작업 메뉴 확장을 만들기 위한 인터페이스를 제공합니다. 일반적으로 Qt Widgets Designer 에서 플러그인에 특정한 작업 메뉴 항목을 만드는 데 사용됩니다.
Qt Widgets Designer 는 QDesignerTaskMenuExtension을 사용하여 작업 메뉴를 제공합니다. 작업 메뉴가 요청될 때마다 Qt Widgets Designer 에서 선택한 위젯의 작업 메뉴 확장을 쿼리합니다.
작업 메뉴 확장은 QAction의 모음입니다. 지정된 확장을 가진 플러그인이 선택되면 작업 메뉴에 작업 항목으로 나타납니다. 위 이미지는 Qt Widgets Designer 의 기본 작업 메뉴 항목에 추가로 표시되는 사용자 지정 상태 편집... 작업을 보여줍니다: 잘라내기, 복사, 붙여넣기 등입니다.
사용자 지정 작업 메뉴 확장을 만들려면 확장 클래스가 QObject 및 QDesignerTaskMenuExtension 모두에서 상속되어야 합니다. 예를 들어
class MyTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: MyTaskMenuExtension(MyCustomWidget *widget, QObject *parent); QAction *preferredEditAction() const; QList<QAction *> taskActions() const; private slots: void mySlot(); private: MyCustomWidget *widget; QAction *myAction; };
인터페이스를 구현하고 있으므로 Q_INTERFACES() 매크로를 사용하여 메타 객체 시스템에 인터페이스를 알려야 합니다. 이렇게 하면 Qt Widgets Designer 에서 qobject_cast() 함수를 사용하여 QObject 포인터만 사용하여 지원되는 인터페이스를 쿼리할 수 있습니다.
Qt Widgets Designer 작업 메뉴에 포함될 작업 목록을 반환하려면 taskActions() 함수를 다시 구현해야 합니다. 선택적으로 preferredEditAction() 함수를 다시 구현하여 플러그인을 선택하고 F2를 누를 때 호출되는 동작을 설정할 수 있습니다. 기본 편집 작업은 taskActions()에서 반환되는 작업 중 하나이어야 하며, 정의되지 않은 경우 F2 키를 누르면 무시됩니다.
Qt Widgets Designer 에서는 확장 기능이 필요할 때까지 확장 기능이 만들어지지 않습니다. 예를 들어 작업 메뉴 확장은 Qt Widgets Designer 의 작업 영역에서 위젯을 마우스 오른쪽 버튼으로 클릭하면 만들어집니다. 따라서 QExtensionFactory 또는 하위 클래스를 사용하여 확장 팩토리를 구성하고 Qt Widgets Designer 의 extension manager 을 사용하여 등록해야 합니다.
작업 메뉴 확장이 필요한 경우 Qt Widgets Designer 의 extension manager 은 선택한 위젯에 대한 작업 메뉴 확장을 만들 수 있는 팩토리를 찾을 때까지 등록된 모든 팩토리를 각각 QExtensionFactory::createExtension()를 호출하여 실행합니다. 그러면 이 팩토리가 확장 프로그램의 인스턴스를 만듭니다.
Qt Widgets Designer 에는 네 가지 유형의 확장이 있습니다: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension, 그리고 QDesignerTaskMenuExtension. Qt Widgets Designer 의 동작은 요청된 확장이 컨테이너, 멤버 시트, 속성 시트 또는 작업 메뉴와 연결되어 있는지 여부에 관계없이 동일합니다.
QExtensionFactory 클래스는 표준 확장 팩토리를 제공하며 사용자 지정 확장 팩토리를 위한 인터페이스로도 사용할 수 있습니다. QExtensionFactory 을 새로 만들고 QExtensionFactory::createExtension() 함수를 다시 구현할 수 있습니다. 예를 들어
QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerTaskMenuExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object)) return new MyTaskMenuExtension(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(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else { return 0; } }
QDesignerTaskMenuExtension 클래스를 사용하는 전체 예는 작업 메뉴 확장 예제를 참조하세요. 이 예에서는 Qt Widgets Designer 에 대한 사용자 지정 위젯 플러그인을 만드는 방법과 QDesignerTaskMenuExtension 클래스를 사용하여 Qt Widgets Designer 의 작업 메뉴에 사용자 지정 항목을 추가하는 방법을 보여 줍니다.
QExtensionFactory, QExtensionManager, 및 사용자 지정 위젯 확장 만들기도참조하세요 .
멤버 함수 문서
[virtual noexcept]
QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
작업 메뉴 확장을 삭제합니다.
[virtual]
QAction *QDesignerTaskMenuExtension::preferredEditAction() const
지정된 확장자를 가진 플러그인을 선택하고 F2를 누를 때 호출되는 액션을 반환합니다.
액션은 taskActions()에서 반환하는 액션 중 하나이어야 합니다.
[pure virtual]
QList<QAction *> QDesignerTaskMenuExtension::taskActions() const
지정된 확장자를 가진 플러그인을 선택하면 Qt Widgets Designer 의 작업 메뉴에 포함될 작업 메뉴 확장자를 작업 목록으로 반환합니다.
목록에 작업을 추가하려면 이 함수를 다시 구현해야 합니다.
© 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.