QProxyStyle Class
Die Klasse „QProxyStyle“ ist eine Hilfs-Klasse, die das dynamische Überschreiben von Elementen der Klasse „ QStyle “ vereinfacht. Mehr...
| Kopfzeile: | #include <QProxyStyle> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QCommonStyle |
Öffentliche Funktionen
| QProxyStyle(QStyle *style = nullptr) | |
| QProxyStyle(const QString &key) | |
| virtual | ~QProxyStyle() |
| QStyle * | baseStyle() const |
| void | setBaseStyle(QStyle *style) |
Neu implementierte öffentliche Funktionen
| virtual void | drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual void | drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual void | drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const override |
| virtual void | drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const override |
| virtual void | drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual QPixmap | generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const override |
| virtual QStyle::SubControl | hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = nullptr) const override |
| virtual QRect | itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const override |
| virtual QRect | itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const override |
| virtual int | layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual int | pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual void | polish(QApplication *app) override |
| virtual void | polish(QPalette &pal) override |
| virtual void | polish(QWidget *widget) override |
| virtual QSize | sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override |
| virtual QIcon | standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual QPalette | standardPalette() const override |
| virtual QPixmap | standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const override |
| virtual int | styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override |
| virtual QRect | subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *option, QStyle::SubControl sc, const QWidget *widget) const override |
| virtual QRect | subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const override |
| virtual void | unpolish(QApplication *app) override |
| virtual void | unpolish(QWidget *widget) override |
Neu implementierte geschützte Funktionen
| virtual bool | event(QEvent *e) override |
Ausführliche Beschreibung
Ein „QProxyStyle“ umhüllt einen „ QStyle “ (in der Regel den Standard-Systemstil), um das Zeichnen oder andere spezifische Stilverhalten dynamisch zu überschreiben. Dies ist die empfohlene Vorgehensweise, um den Plattformstil in einer Produktionsanwendung anzupassen; siehe „Styling-Ansätze“ unter Qt Widgets.
Das folgende Beispiel zeigt, wie das Unterstreichungsverhalten von Tastenkombinationen auf jeder Plattform überschrieben werden kann:
#include "textedit.h"
#include <QApplication>
#include <QProxyStyle>
class MyProxyStyle : public QProxyStyle
{
public:
int styleHint(StyleHint hint, const QStyleOption *option = nullptr,
const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override
{
if (hint == QStyle::SH_UnderlineShortcut)
return 0;
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
int main(int argc, char **argv)
{
Q_INIT_RESOURCE(textedit);
QApplication a(argc, argv);
a.setStyle(new MyProxyStyle);
TextEdit mw;
mw.resize(700, 800);
mw.show();
//...
}Warnung: Die von Qt bereitgestellten common styles berücksichtigen diesen Hinweis, da sie ` QStyle::proxy()` aufrufen; es gibt jedoch keine Garantie dafür, dass ` QStyle::proxy()` für benutzerdefinierte oder systemgesteuerte Stile aufgerufen wird. Dies würde beispielsweise unter macOS nicht funktionieren, wo Menüs vom Betriebssystem verwaltet werden.
Wenn ein Proxy-Stil nur für ein bestimmtes Widget festgelegt werden soll, müssen Sie darauf achten, den Proxy nicht für den globalen Anwendungsstil festzulegen, der von ` QWidget::style()` zurückgegeben wird. Sie müssen einen separaten benutzerdefinierten Stil für das Widget erstellen, ähnlich wie folgt:
...
auto proxy = new MyProxyStyle(QApplication::style()->name());
proxy->setParent(widget); // take ownership to avoid memleak
widget->setStyle(proxy);
...Siehe auch ` QStyle`.
Dokumentation zu Mitgliedsfunktionen
QProxyStyle::QProxyStyle(QStyle *style = nullptr)
Erstellt ein QProxyStyle-Objekt zum Überschreiben des Verhaltens im angegebenen „ style “ oder im standardmäßigen nativen „ style “, falls „ style “ nicht angegeben ist.
Die Eigentumsrechte an ` style ` werden auf `QProxyStyle` übertragen.
QProxyStyle::QProxyStyle(const QString &key)
Erstellt ein QProxyStyle-Objekt zum Überschreiben des Verhaltens im durch „style“ key angegebenen Basisstil oder im aktuellen „ application style “, falls der angegebene Stil „ key “ nicht erkannt wird.
Siehe auch „ QStyleFactory::create()“.
[virtual noexcept] QProxyStyle::~QProxyStyle()
Löscht das „ QProxyStyle “-Objekt.
QStyle *QProxyStyle::baseStyle() const
Gibt das Basisstilobjekt des Proxys zurück. Wenn für den Proxy-Stil kein Basisstil festgelegt ist, erstellt QProxyStyle stattdessen eine Instanz des Anwendungsstils.
Siehe auch „ setBaseStyle()“ und „ QStyle “.
[override virtual] void QProxyStyle::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const
Implementiert neu: ` QCommonStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const`.
[override virtual] void QProxyStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
Implementiert: ` QCommonStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget) const`.
[override virtual] void QProxyStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
Implementiert: ` QStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const`.
[override virtual] void QProxyStyle::drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const
Implementiert: ` QStyle::drawItemText` (`QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const.
[override virtual] void QProxyStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
Implementiert: ` QCommonStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget) const`.
[override virtual protected] bool QProxyStyle::event(QEvent *e)
Implementiert neu: ` QObject::event(QEvent *e)`.
[override virtual] QPixmap QProxyStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
Implementiert: ` QCommonStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const`.
[override virtual] QStyle::SubControl QProxyStyle::hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = nullptr) const
Implementiert: ` QCommonStyle::hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const`.
[override virtual] QRect QProxyStyle::itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
Implementiert neu: ` QStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const`.
[override virtual] QRect QProxyStyle::itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const
Implementiert: QStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const.
[override virtual] int QProxyStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
Umsetzt: QCommonStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const.
Dieser Slot wird von `layoutSpacing()` aufgerufen, um den Abstand zu bestimmen, der in einem Layout zwischen ` control1 ` und ` control2 ` verwendet werden soll. ` orientation ` gibt an, ob die Steuerelemente nebeneinander oder vertikal übereinander angeordnet werden. Der Parameter ` option ` kann verwendet werden, um zusätzliche Informationen über das übergeordnete Widget zu übergeben. Der Parameter ` widget ` ist optional und kann auch verwendet werden, wenn ` option ` den Wert ` nullptr` hat.
Die Standardimplementierung gibt -1 zurück.
Siehe auch „ combinedLayoutSpacing()“.
[override virtual] int QProxyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
Implementiert: ` QCommonStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget) const`.
[override virtual] void QProxyStyle::polish(QApplication *app)
Implementiert: ` QCommonStyle::polish(QApplication *app)`.
[override virtual] void QProxyStyle::polish(QPalette &pal)
Implementiert neu: QCommonStyle::polish(QPalette &pal).
[override virtual] void QProxyStyle::polish(QWidget *widget)
Implementiert: ` QCommonStyle::polish(QWidget *widget)`.
void QProxyStyle::setBaseStyle(QStyle *style)
Legt den Basisstil fest, der als Proxy verwendet werden soll.
Die Eigentumsrechte an „ style “ werden auf „ QProxyStyle “ übertragen.
Wenn „style“ den Wert „ nullptr “ hat, wird automatisch ein desktopabhängiger Stil zugewiesen.
Siehe auch „ baseStyle()“.
[override virtual] QSize QProxyStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
Implementiert: ` QCommonStyle::sizeFromContents(QStyle::ContentsType contentsType, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget) const`.
[override virtual] QIcon QProxyStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
Implementiert: ` QStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const`.
Gibt ein Symbol für das angegebene ` standardIcon` zurück.
Implementieren Sie diesen Slot neu, um in einer Unterklasse von ` QStyle ` eigene Symbole bereitzustellen. Das Argument ` option ` kann verwendet werden, um zusätzliche Informationen zu übergeben, die zum Auffinden des passenden Symbols erforderlich sind. Das Argument ` widget ` ist optional und kann ebenfalls zur Suche nach dem Symbol beitragen.
[override virtual] QPalette QProxyStyle::standardPalette() const
Implementiert: ` QStyle::standardPalette()` const.
[override virtual] QPixmap QProxyStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const
Implementiert: ` QCommonStyle::standardPixmap(QStyle::StandardPixmap sp, const QStyleOption *option, const QWidget *widget) const`.
[override virtual] int QProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const
Implementiert neu: ` QCommonStyle::styleHint` (`QStyle::StyleHint sh, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *hret) const`.
[override virtual] QRect QProxyStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *option, QStyle::SubControl sc, const QWidget *widget) const
Implementiert neu: ` QCommonStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const`.
[override virtual] QRect QProxyStyle::subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const
Implementiert neu: ` QCommonStyle::subElementRect(QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget) const`.
[override virtual] void QProxyStyle::unpolish(QApplication *app)
Implementiert neu: ` QCommonStyle::unpolish(QApplication *application)`.
[override virtual] void QProxyStyle::unpolish(QWidget *widget)
Implementiert: ` QCommonStyle::unpolish(QWidget *widget)`.
© 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.