Класс QExtensionFactory
Класс QExtensionFactory позволяет создать фабрику, способную создавать экземпляры пользовательских расширений в Qt Designer. Подробнее...
| Заголовок: | #include <QExtensionFactory> |
| qmake: | QT += designer |
| Наследует: | QObject и QAbstractExtensionFactory |
Открытые функции
| QExtensionFactory(QExtensionManager *parent = Q_NULLPTR) | |
| QExtensionManager * | extensionManager() const |
Переопределённые открытые функции
| virtual QObject * | extension(QObject *object, const QString &iid) const override |
- 34 открытых функций унаследовано от QObject
- 1 открытая функция унаследовано от QAbstractExtensionFactory
Защищённые функции
| virtual QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
- 9 защищённых функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследовано от QObject
- 2 сигнала унаследовано от QObject
- 1 открытая переменная унаследовано от QObject
- 10 статические открытые члены унаследовано от QObject
- 2 защищённые переменные унаследовано от QObject
Подробное описание
Класс QExtensionFactory позволяет создать фабрику, способную создавать экземпляры пользовательских расширений в Qt Designer.
В Qt Designer расширения не создаются до тех пор, пока они не потребуются. По этой причине при реализации пользовательского расширения также необходимо создать QExtensionFactory, т. е. класс, способный создать экземпляр вашего расширения, и зарегистрировать его с помощью менеджера расширений Qt Designer.
Класс QExtensionManager предоставляет средства управления расширениями для Qt Designer. Когда требуется расширение, менеджер расширений Qt Designer выполняет перебор всех зарегистрированных фабрик, вызывая QExtensionFactory::createExtension() для каждой из них, пока не найдёт первую, способную создать запрашиваемое расширение для выбранного объекта. Эта фабрика затем создаст экземпляр расширения.
В Qt 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 0;
if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
(object))
return new MyContainerExtension(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(QDesignerContainerExtension))) {
return new MyContainerExtension(widget, parent);
} else {
return 0;
}
} Полный пример использования класса QExtensionFactory см. в примере Расширение меню задач. Пример демонстрирует, как создать пользовательский плагин виджета для Qt Designer и как использовать класс QDesignerTaskMenuExtension для добавления пользовательских элементов в меню задач Qt Designer.
См. также QExtensionManager и QAbstractExtensionFactory.
Документация по функциям членов
QExtensionFactory::QExtensionFactory(QExtensionManager *parent = Q_NULLPTR)
Конструктор фабрики расширений с заданным parent.
[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
Создаёт расширение, заданное iid, для данного object. Объект расширения создаётся как дочерний элемент указанного parent.
См. также extension().
[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const
Переопределено из QAbstractExtensionFactory::extension().
Возвращает расширение, заданное iid, для данного object.
См. также createExtension().
QExtensionManager *QExtensionFactory::extensionManager() const
Возвращает менеджер расширений для фабрики расширений.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qextensionfactory.html