Auf dieser Seite

QDesignerPropertySheetExtension Class

Mit der Klasse „QDesignerPropertySheetExtension“ können Sie die Eigenschaften eines Widgets bearbeiten, das im Eigenschafteneditor von „ Qt Designer “ angezeigt wird. Mehr...

Header: #include <QDesignerPropertySheetExtension>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer

Öffentliche Funktionen

QDesignerPropertySheetExtension()
QDesignerPropertySheetExtension(const QDesignerPropertySheetExtension &)
QDesignerPropertySheetExtension(QDesignerPropertySheetExtension &&)
virtual ~QDesignerPropertySheetExtension()
virtual int count() const = 0
virtual bool hasReset(int index) const = 0
virtual int indexOf(const QString &name) const = 0
virtual bool isAttribute(int index) const = 0
virtual bool isChanged(int index) const = 0
virtual bool isEnabled(int index) const = 0
virtual bool isVisible(int index) const = 0
virtual QVariant property(int index) const = 0
virtual QString propertyGroup(int index) const = 0
virtual QString propertyName(int index) const = 0
virtual bool reset(int index) = 0
virtual void setAttribute(int index, bool attribute) = 0
virtual void setChanged(int index, bool changed) = 0
virtual void setProperty(int index, const QVariant &value) = 0
virtual void setPropertyGroup(int index, const QString &group) = 0
virtual void setVisible(int index, bool visible) = 0
QDesignerPropertySheetExtension &operator=(QDesignerPropertySheetExtension &&)
QDesignerPropertySheetExtension &operator=(const QDesignerPropertySheetExtension &)

Ausführliche Beschreibung

QDesignerPropertySheetExtension stellt eine Sammlung von Funktionen bereit, die typischerweise dazu dienen, die Eigenschaften eines Widgets abzufragen und deren Darstellung im Eigenschafteneditor zu bearbeiten. Beispiel:

QDesignerPropertySheetExtension *propertySheet = nullptr;
QExtensionManager manager = formEditor->extensionManager();

propertySheet = qt_extension<QDesignerPropertySheetExtension*>(manager, widget);
int index = propertySheet->indexOf(u"margin"_s);

propertySheet->setProperty(index, 10);
propertySheet->setChanged(index, true);

delete propertySheet;

Beachten Sie, dass bei einer Änderung des Wertes einer Eigenschaft mithilfe der Funktion ` QDesignerPropertySheetExtension::setProperty()` der Rückgängig-Stapel nicht aktualisiert wird. Um sicherzustellen, dass der Wert einer Eigenschaft über den Rückgängig-Stapel rückgängig gemacht werden kann, müssen Sie stattdessen die Funktion ` QDesignerFormWindowCursorInterface::setProperty()` oder deren Schwesterfunktion ` setWidgetProperty()` verwenden.

Bei der Implementierung eines benutzerdefinierten Widget-Plugins wird ein Zeiger auf das aktuelle „ QDesignerFormEditorInterface “-Objekt von „ Qt Widgets Designer“ (im obigen Beispiel „formEditor “) über den Parameter der Funktion „ QDesignerCustomWidgetInterface::initialize()“ bereitgestellt.

Das Eigenschaftsblatt oder jede andere Erweiterung kann durch Abfrage des Erweiterungsmanagers v Qt Widgets -Designers mithilfe der Funktion ` qt_extension()` abgerufen werden. Wenn Sie die Erweiterung freigeben möchten, müssen Sie lediglich den Zeiger löschen.

Alle Widgets verfügen über ein Standard-Eigenschaftsblatt, das den Eigenschaftseditor von „ Qt Widgets Designer“ mit den Eigenschaften des Widgets füllt (d. h. denjenigen, die mit dem Makro „ Q_PROPERTY()“ definiert wurden). „QDesignerPropertySheetExtension“ bietet jedoch auch eine Schnittstelle zum Erstellen benutzerdefinierter Eigenschaftsblatt-Erweiterungen.

Beachten Sie dabei die folgenden Einschränkungen:

  • Qt Widgets Der Designer nutzt die `QDesignerPropertySheetExtension`, um seinen Eigenschaftseditor zu versorgen. Immer wenn ein Widget im Arbeitsbereich ausgewählt wird, fragt der „ Qt Widgets Designer“ nach der Eigenschaftsblatt-Erweiterung des Widgets. Verfügt das ausgewählte Widget über eine implementierte Eigenschaftsblatt-Erweiterung, überschreibt diese die Standard-Eigenschaftsblatt.
  • Die vom Eigenschaftsblatt für einige Eigenschaften verwendeten Datentypen sind undurchsichtige, benutzerdefinierte QVariant -Typen, die zusätzliche Informationen enthalten, anstatt einfache Qt-Datentypen zu verwenden. Dies gilt beispielsweise für Aufzählungen, Flags, Symbole, Pixmaps und Zeichenketten.
  • Qt Widgets Der Eigenschaftseditor von Designer verfügt über keine Implementierung zur Verarbeitung von „ Q_PROPERTY “-Typen für benutzerdefinierte Typen, die mit ` Q_DECLARE_METATYPE()` deklariert wurden.

Um eine Property-Sheet-Erweiterung zu erstellen, muss Ihre Erweiterungsklasse sowohl von „ QObject “ als auch von „QDesignerPropertySheetExtension“ erben. Da wir eine Schnittstelle implementieren, müssen wir außerdem sicherstellen, dass diese dem Metaobjektsystem mithilfe des Makros „ Q_INTERFACES()“ bekannt gemacht wird:

class MyPropertySheetExtension : public QObject,
        public QDesignerPropertySheetExtension
{
    Q_OBJECT
    Q_INTERFACES(QDesignerPropertySheetExtension)

public:
    ...
}

Dadurch kann der „ Qt Widgets Designer“ mithilfe von ` qobject_cast()` nach unterstützten Schnittstellen abfragen, wobei er lediglich einen ` QObject `-Zeiger benötigt.

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 Property-Sheet-Erweiterung auch eine ` QExtensionFactory` erstellen, d. h. eine Klasse, die eine Instanz Ihrer Erweiterung erstellen kann, und diese über „ extension manager “ im „ Qt Widgets Designer“ registrieren.

Wenn eine Property-Sheet-Erweiterung benötigt wird, durchläuft die „ extension manager “ des „ Qt Widgets “-Designers alle registrierten Fabriken und ruft für jede davon „ QExtensionFactory::createExtension()“ auf, bis die erste gefunden wird, die eine Property-Sheet-Erweiterung für das ausgewählte Widget erstellen kann. Diese Fabrik erstellt dann eine Instanz der Erweiterung. Kann keine solche Fabrik gefunden werden, verwendet der „ Qt Widgets “-Designer das Standard-Property-Sheet.

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.

Die Klasse „ QExtensionFactory “ stellt eine Standard-Erweiterungsfabrik bereit 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. Beispiel:

QObject *ANewExtensionFactory::createExtension(QObject *object,
        const QString &iid, QObject *parent) const
{
    if (iid != Q_TYPEID(QDesignerPropertySheetExtension))
        return 0;

    if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
           (object))
        return new MyPropertySheetExtension(widget, parent);

    return 0;
}

Oder Sie können eine vorhandene Factory verwenden und die Funktion ` QExtensionFactory::createExtension()` erweitern, damit die Factory auch eine Eigenschaftenblatt-Erweiterung erstellen kann. 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(QDesignerPropertySheetExtension))) {
        return new MyPropertySheetExtension(widget, parent);

    } else {
        return 0;
    }
}

Ein vollständiges Beispiel für die Verwendung einer Erweiterungsklasse 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ü von „ Qt Widgets Designer“ hinzufügen.

Siehe auch „ QDesignerDynamicPropertySheetExtension“ , „ QExtensionFactory “, „ QExtensionManager “ und „Erstellen benutzerdefinierter Widget-Erweiterungen“.

Dokumentation zu den Member-Funktionen

[constexpr noexcept default] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension()

Erstellt standardmäßig eine Instanz von „ QDesignerPropertySheetExtension “.

[delete] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension(const QDesignerPropertySheetExtension &)

Erstellt eine Instanz von „ QDesignerPropertySheetExtension “ durch Kopieren. Diese Funktion wurde gelöscht.

[delete] QDesignerPropertySheetExtension::QDesignerPropertySheetExtension(QDesignerPropertySheetExtension &&)

Erstellt eine Instanz von „ QDesignerPropertySheetExtension “ mithilfe von „move“. Diese Funktion wurde gelöscht.

[virtual constexpr noexcept default] QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()

Löscht die Erweiterung des Eigenschaftenblatts.

[pure virtual] int QDesignerPropertySheetExtension::count() const

Gibt die Anzahl der Eigenschaften des ausgewählten Widgets zurück.

[pure virtual] bool QDesignerPropertySheetExtension::hasReset(int index) const

Gibt „true“ zurück, wenn die Eigenschaft unter der angegebenen Adresse index im Eigenschaftseditor des Qt Widgets -Designers über eine Schaltfläche „Zurücksetzen“ verfügt, andernfalls „false“.

Siehe auch „ indexOf()“ und „ reset()“.

[pure virtual] int QDesignerPropertySheetExtension::indexOf(const QString &name) const

Gibt den Index einer bestimmten Eigenschaft zurück: name.

Siehe auch propertyName().

[pure virtual] bool QDesignerPropertySheetExtension::isAttribute(int index) const

Gibt „true“ zurück, wenn die Eigenschaft unter der angegebenen Adresse index ein Attribut ist, das aus der UI-Datei ausgeschlossen wird; andernfalls „false“.

Siehe auch ` indexOf()` und ` setAttribute()`.

[pure virtual] bool QDesignerPropertySheetExtension::isChanged(int index) const

Gibt „true“ zurück, wenn der Wert der Eigenschaft unter dem angegebenen index vom Standardwert der Eigenschaft abweicht, andernfalls „false“.

Siehe auch „ indexOf()“, „ setChanged()“ und „ reset()“.

[pure virtual] bool QDesignerPropertySheetExtension::isEnabled(int index) const

Gibt „true“ zurück, wenn die Eigenschaft unter der angegebenen Adresse index im Eigenschaftseditor des „ Qt Widgets “-Designers aktiviert ist, andernfalls „false“.

Siehe auch ` indexOf()`.

[pure virtual] bool QDesignerPropertySheetExtension::isVisible(int index) const

Gibt „true“ zurück, wenn die Eigenschaft unter der angegebenen Adresse index im Eigenschaftseditor von Qt Widgets Designer sichtbar ist, andernfalls „false“.

Siehe auch „ indexOf()“ und „ setVisible()“.

[pure virtual] QVariant QDesignerPropertySheetExtension::property(int index) const

Gibt den Wert der Eigenschaft an der angegebenen Adresse index zurück.

Siehe auch indexOf(), setProperty() und propertyGroup().

[pure virtual] QString QDesignerPropertySheetExtension::propertyGroup(int index) const

Gibt die Eigenschaftsgruppe für die Eigenschaft unter der angegebenen „ index “ zurück.

Qt Widgets Der Eigenschaftseditor des Designers unterstützt Eigenschaftsgruppen, d. h. Abschnitte mit zusammengehörigen Eigenschaften. Eine Eigenschaft kann mithilfe der Funktion ` setPropertyGroup()` einer Gruppe zugeordnet werden. Die Standardgruppe jeder Eigenschaft ist der Name der Klasse, die sie definiert. Beispielsweise erscheint die Eigenschaft ` QObject::objectName ` innerhalb der Eigenschaftsgruppe ` QObject `.

Siehe auch „ indexOf()“ und „ setPropertyGroup()“.

[pure virtual] QString QDesignerPropertySheetExtension::propertyName(int index) const

Gibt den Namen der Eigenschaft an der angegebenen Adresse index zurück.

Siehe auch ` indexOf()`.

[pure virtual] bool QDesignerPropertySheetExtension::reset(int index)

Setzt den Wert der Eigenschaft unter der angegebenen Adresse index auf den Standardwert zurück. Gibt „true“ zurück, wenn ein Standardwert gefunden werden konnte, andernfalls „false“.

Siehe auch „ indexOf()“, „ hasReset()“ und „ isChanged()“.

[pure virtual] void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)

Wenn „ attribute “ auf „true“ gesetzt ist, wird die Eigenschaft unter der angegebenen Adresse „ index “ zu einem Attribut, das aus der UI-Datei ausgeschlossen wird; andernfalls wird sie einbezogen.

Siehe auch „ indexOf()“ und „ isAttribute()“.

[pure virtual] void QDesignerPropertySheetExtension::setChanged(int index, bool changed)

Legt fest, ob die Eigenschaft unter der angegebenen Adresse index vom Standardwert abweicht oder nicht, abhängig vom Parameter changed.

Siehe auch indexOf() und isChanged().

[pure virtual] void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)

Setzt den Wert „ value “ der Eigenschaft auf den angegebenen Wert „ index “.

Warnung: Wenn Sie den Wert einer Eigenschaft mit dieser Funktion ändern, wird der Rückgängig-Stapel nicht aktualisiert. Um sicherzustellen, dass der Wert einer Eigenschaft über den Rückgängig-Stapel rückgängig gemacht werden kann, müssen Sie stattdessen die Funktion „ QDesignerFormWindowCursorInterface::setProperty()“ oder deren Partnerfunktion „ setWidgetProperty()“ verwenden.

Siehe auch „ indexOf()“, „ property()“ und „ propertyGroup()“.

[pure virtual] void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)

Setzt die Eigenschaftsgruppe für die Eigenschaft unter der angegebenen Adresse index auf group.

Durch die Zuordnung einer Eigenschaft zu einer Gruppe wird diese im Eigenschaftseditor im Abschnitt dieser Gruppe angezeigt. Die Standard-Eigenschaftsgruppe jeder Eigenschaft ist der Name der Klasse, die sie definiert. Beispielsweise wird die Eigenschaft „ QObject::objectName “ in der Eigenschaftsgruppe „ QObject “ angezeigt.

Siehe auch „ indexOf()“, „ property()“ und „ propertyGroup()“.

[pure virtual] void QDesignerPropertySheetExtension::setVisible(int index, bool visible)

Wenn „ visible “ auf „true“ gesetzt ist, wird die Eigenschaft unter der angegebenen Adresse „ index “ im Eigenschaftseditor des „ Qt Widgets Designer“ angezeigt; andernfalls ist die Eigenschaft ausgeblendet.

Siehe auch indexOf() und isVisible().

[delete] QDesignerPropertySheetExtension &QDesignerPropertySheetExtension::operator=(QDesignerPropertySheetExtension &&)

Weist „ other “ dieser „ QDesignerPropertySheetExtension “-Instanz zu. Diese Funktion wird gelöscht.

[delete] QDesignerPropertySheetExtension &QDesignerPropertySheetExtension::operator=(const QDesignerPropertySheetExtension &)

other Weist dieser „ QDesignerPropertySheetExtension “-Instanz „ “ per Kopierzuweisung zu. Diese Funktion wird gelöscht.

© 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.