QDesignerMemberSheetExtension Class
Die Klasse QDesignerMemberSheetExtension ermöglicht die Bearbeitung der Memberfunktionen eines Widgets, das bei der Konfiguration von Verbindungen im Qt Widgets Designer-Modus zur Bearbeitung von Signalen und Slots angezeigt wird. 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 um das Erscheinungsbild der Member-Funktionen im Bearbeitungsmodus der Signale und Slots von Qt Widgets Designer 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 das aktuelle QDesignerFormEditorInterface Objekt von Qt Widgets Designer (formEditor
im obigen Beispiel) durch den Parameter der Funktion QDesignerCustomWidgetInterface::initialize() bereitgestellt.
Das Member Sheet (und jede andere Erweiterung) kann durch Abfrage des Qt Widgets Designer's Extension Managers mit der qt_extension() Funktion abgerufen werden. Wenn Sie die Erweiterung freigeben wollen, müssen Sie nur den Zeiger löschen.
Alle Widgets haben ein Standard-Membersheet, das in Qt Widgets Designers Signal- und Slotbearbeitungsmodus 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 Member-Sheet-Erweiterungen der Widgets. Wenn ein Widget eine implementierte Member-Sheet-Erweiterung hat, wird diese Erweiterung das Standard-Member-Sheet überschreiben.
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: ... }
Dadurch kann Qt Widgets Designer qobject_cast() verwenden, um nach unterstützten Schnittstellen zu suchen, wobei nichts weiter als ein QObject -Zeiger verwendet wird.
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.
Es gibt vier verfügbare Typen 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 mehrseitigen Container, einem Mitgliederblatt, einem Eigenschaftsblatt 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 Memberfunktion 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 dem angegebenen index im Bearbeitungsmodus für Signale und Slots von Qt Widgets Designer sichtbar; andernfalls wird die Mitgliedsfunktion ausgeblendet.
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.