Класс QExtensionManager
Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer. Подробнее...
| Заголовок: | #include <QExtensionManager> |
| qmake: | QT += designer |
| Наследует: | QObject и QAbstractExtensionManager |
Открытые функции
| QExtensionManager(QObject *parent = Q_NULLPTR) | |
| virtual | ~QExtensionManager() |
Переопределённые открытые функции
| virtual QObject * | extension(QObject *object, const QString &iid) const override |
| virtual void | registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()) override |
| virtual void | unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()) override |
- 31 открытых функций, унаследованных от QObject
- 3 открытых функций, унаследованных от QAbstractExtensionManager
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов, унаследованных от QObject
Макросы
| Q_DECLARE_EXTENSION_INTERFACE(ExtensionName, Identifier) |
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 2 сигналы, унаследованные от QObject
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer.
В Qt Designer расширения не создаются до тех пор, пока они не потребуются. По этой причине при реализации расширения необходимо также создать QExtensionFactory, т.е. класс, способный создать экземпляр вашего расширения, и зарегистрировать его с помощью менеджера расширений Qt Designer.
Регистрация фабрики расширений обычно выполняется в функции QDesignerCustomWidgetInterface::initialize():
void MyPlugin::initialize(QDesignerFormEditorInterface *formEditor)
{
if (initialized)
return;
QExtensionManager *manager = formEditor->extensionManager();
Q_ASSERT(manager != 0);
manager->registerExtensions(new MyExtensionFactory(manager),
Q_TYPEID(QDesignerTaskMenuExtension));
initialized = true;
} Класс QExtensionManager не предназначен для прямого создания экземпляров. Вы можете получить интерфейс к менеджеру расширений Qt Designer, используя функцию QDesignerFormEditorInterface::extensionManager(). Указатель на текущий объект QDesignerFormEditorInterface Qt Designer (formEditor в примере выше) предоставляется в качестве параметра функции QDesignerCustomWidgetInterface::initialize(). При реализации плагина пользовательского виджета необходимо унаследовать класс QDesignerCustomWidgetInterface, чтобы предоставить свой плагин Qt Designer.
Затем, когда требуется расширение, менеджер расширений Qt Designer перебирает все зарегистрированные фабрики, вызывая QExtensionFactory::createExtension() для каждой из них, пока не найдет первую, способную создать затребованное расширение для выбранного объекта. Эта фабрика затем создаст экземпляр расширения.
В Qt Designer доступны четыре типа расширений: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension и QDesignerTaskMenuExtension. Поведение Qt Designer одинаково, независимо от того, связано ли затребованное расширение с контейнером, листом членов, листом свойств или меню задач.
Полный пример использования класса QExtensionManager см. в примере расширения меню задач. Пример показывает, как создать плагин пользовательского виджета для Qt Designer и как использовать класс QDesignerTaskMenuExtension для добавления пользовательских элементов в меню задач Qt Designer.
См. также QExtensionFactory и QAbstractExtensionManager.
Документация по членам-функциям
QExtensionManager::QExtensionManager(QObject *parent = Q_NULLPTR)
Конструирует менеджер расширений с заданным parent.
[virtual] QExtensionManager::~QExtensionManager()
Удаляет менеджер расширений
[override virtual] QObject *QExtensionManager::extension(QObject *object, const QString &iid) const
Переопределяет QAbstractExtensionManager::extension().
Возвращает расширение, указанное iid, для данного object.
[override virtual] void QExtensionManager::registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())
Переопределяет QAbstractExtensionManager::registerExtensions().
Регистрирует расширение, указанное заданной factory и идентификатором расширения iid.
[override virtual] void QExtensionManager::unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString())
Переопределяет QAbstractExtensionManager::unregisterExtensions().
Отменяет регистрацию расширения, указанного заданной factory и идентификатором расширения iid.
Документация по макросам
Q_DECLARE_EXTENSION_INTERFACE(ExtensionName, Identifier)
Связывает заданный Identifier (строковая литерал) с классом расширения ExtensionName. Identifier должен быть уникальным. Например:
Q_DECLARE_EXTENSION_INTERFACE(MyExtension, "com.mycompany.myproduct.myextension")
Использование имени компании и продукта является хорошим способом обеспечения уникальности идентификатора.
При реализации пользовательского класса расширения необходимо использовать Q_DECLARE_EXTENSION_INTERFACE(), чтобы включить использование функции qt_extension(). Макрос обычно располагается сразу после определения класса ExtensionName в соответствующем файле заголовков.
См. также Q_DECLARE_INTERFACE().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qextensionmanager.html