QExtensionFactory Class
Mit der Klasse „QExtensionFactory“ können Sie eine Factory erstellen, die Instanzen benutzerdefinierter Erweiterungen in „ Qt Designer “ erzeugen kann. Mehr dazu...
| Überschrift: | #include <QExtensionFactory> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
| Erbt von: | QObject und QAbstractExtensionFactory |
Öffentliche Funktionen
| QExtensionFactory(QExtensionManager *parent = nullptr) | |
| QExtensionManager * | extensionManager() const |
Neu implementierte öffentliche Funktionen
| virtual QObject * | extension(QObject *object, const QString &iid) const override |
Geschützte Funktionen
| virtual QObject * | createExtension(QObject *object, const QString &iid, QObject *parent) const |
Ausführliche Beschreibung
Im „ Qt Widgets Designer“ werden die Erweiterungen erst dann erstellt, wenn sie benötigt werden. Aus diesem Grund müssen Sie bei der Implementierung einer benutzerdefinierten Erweiterung auch eine „QExtensionFactory“ erstellen, d. h. eine Klasse, die eine Instanz Ihrer Erweiterung erstellen kann, und diese über die „ extension manager “ des „ Qt Widgets Designer“ registrieren.
Die Klasse „ QExtensionManager “ stellt Funktionen zur Verwaltung von Erweiterungen für den „ Qt Widgets “-Designer bereit. Wenn eine Erweiterung benötigt wird, durchläuft die Methode „ extension manager “ von „ Qt Designer “ alle registrierten Fabriken und ruft für jede davon die Methode „ QExtensionFactory::createExtension()“ auf, bis die erste gefunden wird, die in der Lage ist, eine angeforderte Erweiterung für das ausgewählte Objekt zu erstellen. Diese Fabrik erstellt dann eine Instanz der Erweiterung.
Im „ Qt Widgets “-Designer stehen vier Arten von Erweiterungen zur Verfügung: „ QDesignerContainerExtension “, „ QDesignerMemberSheetExtension “, „ QDesignerPropertySheetExtension “ und „ QDesignerTaskMenuExtension “. Das Verhalten von „ Qt Designer “ ist unabhängig davon, ob die angeforderte Erweiterung mit einem mehrseitigen Container, einem Member-Sheet, einem Property-Sheet oder einem Aufgabenmenü verknüpft ist.
Sie können entweder eine neue `QExtensionFactory` erstellen und die Funktion ` QExtensionFactory::createExtension()` neu implementieren. Zum Beispiel:
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;
}Oder Sie können eine vorhandene Factory verwenden und die Funktion ` QExtensionFactory::createExtension()` erweitern, damit die Factory auch Ihre Erweiterung erstellen kann. Zum Beispiel:
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;
}Ein vollständiges Beispiel für die Verwendung der Klasse `QExtensionFactory` finden Sie im Beispiel „Task Menu Extension“. Das Beispiel zeigt, wie Sie ein benutzerdefiniertes Widget-Plugin für ` Qt Designer` erstellen und wie Sie mithilfe der Klasse ` QDesignerTaskMenuExtension ` benutzerdefinierte Elemente zum Aufgabenmenü des „ Qt Widgets -Designers“ hinzufügen.
Siehe auch „ QExtensionManager “ und „ QAbstractExtensionFactory “.
Dokumentation zu den Member-Funktionen
[explicit] QExtensionFactory::QExtensionFactory(QExtensionManager *parent = nullptr)
Erstellt eine Erweiterungsfabrik mit dem angegebenen „ parent “.
[virtual protected] QObject *QExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
Erstellt eine Erweiterung, die durch iid für die angegebene object definiert ist. Das Erweiterungsobjekt wird als untergeordnetes Element des angegebenen parent erstellt.
Siehe auch extension().
[override virtual] QObject *QExtensionFactory::extension(QObject *object, const QString &iid) const
Umsetzung von: ` QAbstractExtensionFactory::extension(QObject *object, const QString &iid) const`.
Gibt die durch ` iid ` angegebene Erweiterung für das angegebene ` object` zurück.
Siehe auch createExtension().
QExtensionManager *QExtensionFactory::extensionManager() const
Gibt den Erweiterungsmanager für die Erweiterungsfabrik zurück.
© 2026 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.