Класс 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 |
- 31 открытая функция унаследована от QObject
- 1 открытая функция унаследована от QAbstractExtensionFactory
Защищённые функции
| virtual QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
- 9 защищённых функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследованы от QObject
- 11 статических открытых членов унаследованы от 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().
[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.6/qextensionfactory.html