QProxyStyle Class
Die Klasse QProxyStyle ist eine Komfortklasse, die das dynamische Überschreiben von QStyle Elementen vereinfacht. Mehr...
Kopfzeile: | #include <QProxyStyle> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbungen: | QCommonStyle |
Öffentliche Funktionen
QProxyStyle(QStyle *style = nullptr) | |
QProxyStyle(const QString &key) | |
virtual | ~QProxyStyle() |
QStyle * | baseStyle() const |
void | setBaseStyle(QStyle *style) |
Reimplementierte ö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 |
Reimplementierte geschützte Funktionen
virtual bool | event(QEvent *e) override |
Detaillierte Beschreibung
Ein QProxyStyle umhüllt einen QStyle (in der Regel den Standard-Systemstil) mit dem Ziel, das Malen oder ein anderes spezifisches Stilverhalten dynamisch zu überschreiben.
Das folgende Beispiel zeigt, wie man das Verhalten der Unterstreichungen auf jeder Plattform überschreiben 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 werden diesen Hinweis respektieren, da sie QStyle::proxy() aufrufen, aber es gibt keine Garantie, dass QStyle::proxy() für benutzerdefinierte oder systemgesteuerte Stile aufgerufen wird. Es würde zum Beispiel nicht auf einem Mac funktionieren, wo die Menüs vom Betriebssystem verwaltet werden.
Wenn ein Proxy-Stil nur auf ein bestimmtes Widget gesetzt werden soll, müssen Sie sicherstellen, dass der Proxy nicht auf den globalen Anwendungsstil gesetzt wird, der von QWidget::style() zurückgegeben wird. Sie müssen einen separaten benutzerdefinierten Stil für das Widget erstellen, ähnlich wie bei:
... auto proxy = new MyProxyStyle(QApplication::style()->name()); proxy->setParent(widget); // take ownership to avoid memleak widget->setStyle(proxy); ...
Siehe auch QStyle.
Dokumentation der Mitgliedsfunktionen
QProxyStyle::QProxyStyle(QStyle *style = nullptr)
Konstruiert ein QProxyStyle-Objekt zum Überschreiben des Verhaltens im angegebenen style oder im standardmäßigen nativen style, wenn style nicht angegeben ist.
Die Eigentümerschaft von style wird an QProxyStyle übertragen.
QProxyStyle::QProxyStyle(const QString &key)
Konstruiert ein QProxyStyle-Objekt, um das Verhalten des durch style key angegebenen Basisstils zu überschreiben, oder des aktuellen application style, wenn der angegebene Stil key nicht bekannt ist.
Siehe auch QStyleFactory::create().
[virtual noexcept]
QProxyStyle::~QProxyStyle()
Zerstört das Objekt QProxyStyle.
QStyle *QProxyStyle::baseStyle() const
Gibt das Objekt des Proxy-Basisstils 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
Reimplements: 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
Reimplements: 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
Reimplements: 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
Reimplements: 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
Reimplements: QCommonStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget) const.
[override virtual protected]
bool QProxyStyle::event(QEvent *e)
Reimplements: QObject::event(QEvent *e).
[override virtual]
QPixmap QProxyStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
Reimplements: 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
Reimplements: 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
Reimplements: 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
Reimplements: 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
Reimplements: 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 zwischen control1 und control2 in einem Layout verwendet werden soll. orientation gibt an, ob die Steuerelemente nebeneinander oder vertikal gestapelt angeordnet werden sollen. 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 nullptr
ist.
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
Reimplements: QCommonStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget) const.
[override virtual]
void QProxyStyle::polish(QApplication *app)
Reimplements: QCommonStyle::polish(QApplication *app).
[override virtual]
void QProxyStyle::polish(QPalette &pal)
Reimplements: QCommonStyle::polish(QPalette &pal).
[override virtual]
void QProxyStyle::polish(QWidget *widget)
Reimplements: QCommonStyle::polish(QWidget *widget).
void QProxyStyle::setBaseStyle(QStyle *style)
Legt den Basisstil fest, der als Proxy verwendet werden soll.
Der Besitz von style wird an QProxyStyle übertragen.
Wenn style nullptr
ist, wird automatisch ein desktop-abhängiger Stil zugewiesen.
Siehe auch baseStyle().
[override virtual]
QSize QProxyStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
Reimplements: 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
Reimplements: QStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const.
Gibt ein Icon für das angegebene standardIcon zurück.
Reimplementieren Sie diesen Slot, um Ihre eigenen Icons in einer QStyle Unterklasse bereitzustellen. Das Argument option kann verwendet werden, um zusätzliche Informationen zu übergeben, die benötigt werden, um das passende Icon zu finden. Das Argument widget ist optional und kann ebenfalls verwendet werden, um das Symbol zu finden.
[override virtual]
QPalette QProxyStyle::standardPalette() const
Reimplements: QStyle::standardPalette() const.
[override virtual]
QPixmap QProxyStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const
Reimplements: 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
Reimplements: 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
Reimplements: 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
Reimplements: QCommonStyle::subElementRect(QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget) const.
[override virtual]
void QProxyStyle::unpolish(QApplication *app)
Reimplements: QCommonStyle::unpolish(QApplication *application).
[override virtual]
void QProxyStyle::unpolish(QWidget *widget)
Reimplements: QCommonStyle::unpolish(QWidget *widget).
© 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.