QDesignerTaskMenuExtension Class
Die Klasse QDesignerTaskMenuExtension ermöglicht das Hinzufügen von benutzerdefinierten Menüeinträgen in das Aufgabenmenü von Qt Widgets Designer. Mehr...
Kopfzeile: | #include <QDesignerTaskMenuExtension> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
Öffentliche Funktionen
virtual | ~QDesignerTaskMenuExtension() |
virtual QAction * | preferredEditAction() const |
virtual QList<QAction *> | taskActions() const = 0 |
Detaillierte Beschreibung
QDesignerTaskMenuExtension bietet eine Schnittstelle zur Erstellung von benutzerdefinierten Taskmenü-Erweiterungen. Es wird typischerweise verwendet, um Taskmenüeinträge zu erstellen, die spezifisch für ein Plugin in Qt Widgets Designer sind.
Qt Widgets Designer verwendet die QDesignerTaskMenuExtension, um sein Aufgabenmenü zu speisen. Wann immer ein Aufgabenmenü angefordert wird, fragt Qt Widgets Designer nach der Aufgabenmenüerweiterung des ausgewählten Widgets.
Eine Task-Menü-Erweiterung ist eine Sammlung von QActions. Die Aktionen erscheinen als Einträge im Aufgabenmenü, wenn das Plugin mit der angegebenen Erweiterung ausgewählt wird. Das obige Bild zeigt die benutzerdefinierte Aktion Status bearbeiten..., die zusätzlich zu den Standardeinträgen des Aufgabenmenüs von Qt Widgets Designer erscheint: Ausschneiden, Kopieren, Einfügen usw.
Um eine benutzerdefinierte Taskmenü-Erweiterung zu erstellen, muss Ihre Erweiterungsklasse sowohl von QObject als auch von QDesignerTaskMenuExtension erben. Ein Beispiel:
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; };
Da wir eine Schnittstelle implementieren, müssen wir sicherstellen, dass sie dem Meta-Objektsystem mit dem Q_INTERFACES() Makro bekannt gemacht wird. Dies ermöglicht Qt Widgets Designer, die Funktion qobject_cast() zu verwenden, um nach unterstützten Schnittstellen zu suchen, wobei nichts weiter als ein Zeiger QObject verwendet wird.
Sie müssen die Funktion taskActions() neu implementieren, um eine Liste von Aktionen zurückzugeben, die in das Aufgabenmenü von Qt Widgets Designer aufgenommen werden sollen. Optional können Sie die Funktion preferredEditAction() neu implementieren, um die Aktion festzulegen, die aufgerufen wird, wenn Sie Ihr Plugin auswählen und F2 drücken. Die bevorzugte Bearbeitungsaktion muss eine der Aktionen sein, die von taskActions() zurückgegeben werden, und wenn sie nicht definiert ist, wird das Drücken der F2-Taste einfach ignoriert.
In Qt Widgets Designer werden Erweiterungen erst erstellt, wenn sie benötigt werden. Eine Task-Menü-Erweiterung wird zum Beispiel erstellt, wenn Sie mit der rechten Maustaste auf ein Widget im Arbeitsbereich von Qt Widgets Designer klicken. Aus diesem Grund müssen Sie auch eine Erweiterungsfabrik konstruieren, entweder mit QExtensionFactory oder einer Unterklasse, und diese mit Qt Widgets Designer's extension manager registrieren.
Wenn eine Aufgabenmenüerweiterung benötigt wird, durchläuft Qt Widgets Designer's extension manager alle registrierten Fabriken und ruft QExtensionFactory::createExtension() für jede auf, bis es eine findet, die in der Lage ist, eine Aufgabenmenüerweiterung für das ausgewählte Widget zu erstellen. Diese Fabrik wird dann eine Instanz der Erweiterung erstellen.
Es gibt vier verfügbare Arten von Erweiterungen in Qt Widgets Designer: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension, und QDesignerTaskMenuExtension. Qt Widgets Das Verhalten des Designers ist gleich, unabhängig davon, ob die angeforderte Erweiterung mit einem Container, einem Member Sheet, einem Property Sheet oder einem Task Menu verbunden ist.
Die Klasse QExtensionFactory bietet eine Standard-Erweiterungsfabrik und kann auch als Schnittstelle für benutzerdefinierte Erweiterungsfabriken verwendet werden. Sie können entweder eine neue QExtensionFactory erstellen und die Funktion QExtensionFactory::createExtension() reimplementieren. Zum Beispiel:
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; }
Oder Sie können eine bestehende Fabrik verwenden und die Funktion QExtensionFactory::createExtension() so erweitern, dass die Fabrik auch eine Aufgabenmenüerweiterung erstellen kann. Ein Beispiel:
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; } }
Ein komplettes Beispiel mit der Klasse QDesignerTaskMenuExtension finden Sie im Beispiel Task Menu Extension. Das Beispiel zeigt, wie ein benutzerdefiniertes Widget-Plugin für Qt Widgets Designer erstellt wird und wie die Klasse QDesignerTaskMenuExtension verwendet wird, um benutzerdefinierte Elemente zum Taskmenü von Qt Widgets Designer hinzuzufügen.
Siehe auch QExtensionFactory, QExtensionManager, und Erstellen von benutzerdefinierten Widget-Erweiterungen.
Dokumentation der Mitgliedsfunktionen
[virtual noexcept]
QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
Zerstört die Erweiterung des Aufgabenmenüs.
[virtual]
QAction *QDesignerTaskMenuExtension::preferredEditAction() const
Gibt die Aktion zurück, die aufgerufen wird, wenn ein Plugin mit der angegebenen Erweiterung ausgewählt und F2 gedrückt wird.
Die Aktion muss eine der Aktionen sein, die von taskActions() zurückgegeben werden.
[pure virtual]
QList<QAction *> QDesignerTaskMenuExtension::taskActions() const
Gibt die Erweiterung des Aufgabenmenüs als Liste von Aktionen zurück, die in das Aufgabenmenü von Qt Widgets Designer aufgenommen werden, wenn ein Plugin mit der angegebenen Erweiterung ausgewählt wird.
Die Funktion muss neu implementiert werden, um Aktionen zur Liste hinzuzufügen.
© 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.