QDesignerMemberSheetExtension Class
Die Klasse QDesignerMemberSheetExtension ermöglicht es, die Memberfunktionen eines Widgets zu manipulieren, die bei der Konfiguration von Verbindungen im Qt Widgets Designer Modus zur Bearbeitung von Signalen und Slots angezeigt werden. Mehr...
Kopfzeile: | #include <QDesignerMemberSheetExtension> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
qmake: | QT += designer |
Öffentliche Funktionen
virtual | ~QDesignerMemberSheetExtension() |
virtual int | count() const = 0 |
virtual QString | declaredInClass(int index) const = 0 |
virtual int | indexOf(const QString &name) const = 0 |
virtual bool | inheritedFromWidget(int index) const = 0 |
virtual bool | isSignal(int index) const = 0 |
virtual bool | isSlot(int index) const = 0 |
virtual bool | isVisible(int index) const = 0 |
virtual QString | memberGroup(int index) const = 0 |
virtual QString | memberName(int index) const = 0 |
virtual QList<QByteArray> | parameterNames(int index) const = 0 |
virtual QList<QByteArray> | parameterTypes(int index) const = 0 |
virtual void | setMemberGroup(int index, const QString &group) = 0 |
virtual void | setVisible(int index, bool visible) = 0 |
virtual QString | signature(int index) const = 0 |
Detaillierte Beschreibung
QDesignerMemberSheetExtension ist eine Sammlung von Funktionen, die typischerweise verwendet werden, um die Member-Funktionen eines Widgets abzufragen und das Erscheinungsbild der Member-Funktionen im Bearbeitungsmodus von Qt Widgets Designer's Signalen und Slots zu manipulieren. Ein Beispiel:
QDesignerMemberSheetExtension *memberSheet = nullptr; QExtensionManager manager = formEditor->extensionManager(); memberSheet = qt_extension<QDesignerMemberSheetExtension*>(manager, widget); int index = memberSheet->indexOf(setEchoMode); memberSheet->setVisible(index, false); delete memberSheet;
Bei der Implementierung eines benutzerdefinierten Widget-Plugins wird ein Zeiger auf Qt Widgets Designer's aktuelles QDesignerFormEditorInterface Objekt (formEditor
im obigen Beispiel) durch den Parameter der Funktion QDesignerCustomWidgetInterface::initialize() bereitgestellt.
Das Mitgliedsblatt (und jede andere Erweiterung) kann durch Abfrage des Erweiterungsmanagers von Qt Widgets Designer mit der Funktion qt_extension() abgerufen werden. Wenn Sie die Erweiterung freigeben wollen, müssen Sie nur den Zeiger löschen.
Alle Widgets haben ein Standard-Membersheet, das im Qt Widgets Designer's Signale und Slots Bearbeitungsmodus mit den Memberfunktionen des Widgets verwendet wird. Aber QDesignerMemberSheetExtension bietet auch eine Schnittstelle zum Erstellen von benutzerdefinierten Member Sheet Erweiterungen.
Warnung: Qt Widgets Designer verwendet die QDesignerMemberSheetExtension, um den Signal- und Slotbearbeitungsmodus zu erleichtern. Wann immer eine Verbindung zwischen zwei Widgets angefordert wird, fragt Qt Widgets Designer nach den MemberSheetExtensions der Widgets. Wenn ein Widget über eine implementierte Member-Sheet-Erweiterung verfügt, setzt diese Erweiterung das Standard-Member-Sheet außer Kraft.
Um eine Member-Sheet-Erweiterung zu erstellen, muss Ihre Erweiterungsklasse sowohl von QObject als auch von QDesignerMemberSheetExtension erben. Da wir eine Schnittstelle implementieren, müssen wir sicherstellen, dass sie dem Meta-Objektsystem mit dem Makro Q_INTERFACES() bekannt gemacht wird:
class MyMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: ... }
Dies ermöglicht Qt Widgets Designer, qobject_cast() zu verwenden, um unterstützte Schnittstellen mit nichts anderem als einem QObject -Zeiger abzufragen.
In Qt Widgets Designer werden die Erweiterungen erst erstellt, wenn sie benötigt werden. Aus diesem Grund müssen Sie, wenn Sie eine Member-Sheet-Erweiterung implementieren, auch eine QExtensionFactory erstellen, d.h. eine Klasse, die in der Lage ist, eine Instanz Ihrer Erweiterung zu erzeugen, und diese mit Qt Widgets Designer's extension manager registrieren.
Wenn die Member-Sheet-Erweiterung eines Widgets benötigt wird, durchläuft Qt Widgets Designer's extension manager alle registrierten Fabriken und ruft QExtensionFactory::createExtension() für jede auf, bis die erste gefunden wird, die in der Lage ist, eine Member-Sheet-Erweiterung für dieses Widget zu erstellen. Diese Fabrik wird dann eine Instanz der Erweiterung erstellen. Wenn keine solche Fabrik gefunden wird, verwendet Qt Widgets Designer das Standard-Membersheet.
In Qt Widgets Designer sind vier Arten von Erweiterungen verfügbar: QDesignerContainerExtension, QDesignerMemberSheetExtension, QDesignerPropertySheetExtension und QDesignerTaskMenuExtension. Qt Widgets Designer verhält sich gleich, unabhängig davon, ob die angeforderte Erweiterung mit einem mehrseitigen Container, einem Member Sheet, einem Property Sheet oder einem Aufgabenmenü 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() neu implementieren. Zum Beispiel:
QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerMemberSheetExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyMemberSheetExtension(widget, parent); return 0; }
Oder Sie können eine bestehende Fabrik verwenden und die Funktion QExtensionFactory::createExtension() so erweitern, dass die Fabrik in der Lage ist, auch eine Member-Sheet-Erweiterung zu erstellen. Ein Beispiel:
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(QDesignerMemberSheetExtension))) { return new MyMemberSheetExtension(widget, parent); } else { return 0; } }
Ein vollständiges Beispiel für die Verwendung einer Erweiterungsklasse finden Sie unter Beispiel für eine Aufgabenmenüerweiterung. Das Beispiel zeigt, wie Sie ein benutzerdefiniertes Widget-Plugin für Qt Designer erstellen und wie Sie die Klasse QDesignerTaskMenuExtension verwenden, um benutzerdefinierte Elemente zum Aufgabenmenü von Qt Widgets Designer hinzuzufügen.
Siehe auch QExtensionFactory, QExtensionManager, und Erstellen von benutzerdefinierten Widget-Erweiterungen.
Dokumentation der Mitgliedsfunktionen
[virtual constexpr noexcept]
QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
Zerstört die Erweiterung des Mitgliedsblatts.
[pure virtual]
int QDesignerMemberSheetExtension::count() const
Gibt die Anzahl der Mitgliedsfunktionen der Erweiterung zurück.
[pure virtual]
QString QDesignerMemberSheetExtension::declaredInClass(int index) const
Gibt den Namen der Klasse zurück, in der die Memberfunktion mit der angegebenen index deklariert ist.
Siehe auch indexOf().
[pure virtual]
int QDesignerMemberSheetExtension::indexOf(const QString &name) const
Gibt den Index der Mitgliedsfunktion zurück, die durch die angegebene name angegeben wird.
Siehe auch memberName().
[pure virtual]
bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
Gibt true zurück, wenn die Memberfunktion mit dem angegebenen index von QWidget geerbt wird, andernfalls false.
Siehe auch indexOf().
[pure virtual]
bool QDesignerMemberSheetExtension::isSignal(int index) const
Gibt true zurück, wenn die Mitgliedsfunktion mit der angegebenen index ein Signal ist, andernfalls false.
Siehe auch indexOf().
[pure virtual]
bool QDesignerMemberSheetExtension::isSlot(int index) const
Gibt true zurück, wenn die Memberfunktion mit der angegebenen index ein Slot ist, andernfalls false.
Siehe auch indexOf().
[pure virtual]
bool QDesignerMemberSheetExtension::isVisible(int index) const
Gibt true zurück, wenn die Mitgliedsfunktion mit der angegebenen index im Signal- und Slot-Editor von Qt Widgets Designer sichtbar ist, andernfalls false.
Siehe auch indexOf() und setVisible().
[pure virtual]
QString QDesignerMemberSheetExtension::memberGroup(int index) const
Gibt den Namen der Mitgliedergruppe zurück, die für die Funktion mit dem angegebenen index angegeben wurde.
Siehe auch indexOf() und setMemberGroup().
[pure virtual]
QString QDesignerMemberSheetExtension::memberName(int index) const
Gibt den Namen der Mitgliedsfunktion mit dem angegebenen index zurück.
Siehe auch indexOf().
[pure virtual]
QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
Liefert die Parameternamen der Mitgliedsfunktion mit dem angegebenen index, als QByteArray Liste.
Siehe auch indexOf() und parameterTypes().
[pure virtual]
QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
Gibt die Parametertypen der Mitgliedsfunktion mit dem angegebenen index als QByteArray Liste zurück.
Siehe auch indexOf() und parameterNames().
[pure virtual]
void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
Setzt die Mitgliedsgruppe der Mitgliedsfunktion mit dem angegebenen index auf group.
Siehe auch indexOf() und memberGroup().
[pure virtual]
void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
Wenn visible wahr ist, ist die Mitgliedsfunktion mit der angegebenen index im Bearbeitungsmodus für Signale und Slots von Qt Widgets Designer sichtbar; andernfalls ist die Mitgliedsfunktion verborgen.
Siehe auch indexOf() und isVisible().
[pure virtual]
QString QDesignerMemberSheetExtension::signature(int index) const
Gibt die Signatur der Mitgliedsfunktion mit der angegebenen index zurück.
Siehe auch indexOf().
© 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.