diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2019-06-21 14:43:39 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-01-02 14:14:38 +0100 |
commit | 05e5306787d3511ce9df2ffc8dbefe529f889eb6 (patch) | |
tree | afcfd86daf93b1d5c3b556552d45eebc53c77ae8 /examples/widgets/widgets/styles | |
parent | a6f56251ca6090cb0ba4c4989d7ccc638b1dbe2b (diff) |
styles example: Implement standarPalette()
Instead of polishing the (possible) system palette. Makes the checkbox
for "Use style's standard palette" actually work for the custom style,
and is how styles are supposed to provide their own preferred palette.
Change-Id: I3228ef45c023d0d058e48ff0fc14f094367b2008
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'examples/widgets/widgets/styles')
-rw-r--r-- | examples/widgets/widgets/styles/norwegianwoodstyle.cpp | 74 | ||||
-rw-r--r-- | examples/widgets/widgets/styles/norwegianwoodstyle.h | 4 |
2 files changed, 43 insertions, 35 deletions
diff --git a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp index bbdb626a18..31150cd994 100644 --- a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp +++ b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp @@ -62,42 +62,48 @@ NorwegianWoodStyle::NorwegianWoodStyle() : } //! [0] -void NorwegianWoodStyle::polish(QPalette &palette) +QPalette NorwegianWoodStyle::standardPalette() const { - QColor brown(212, 140, 95); - QColor beige(236, 182, 120); - QColor slightlyOpaqueBlack(0, 0, 0, 63); - - QImage backgroundImage(":/images/woodbackground.png"); - QImage buttonImage(":/images/woodbutton.png"); - QImage midImage = buttonImage.convertToFormat(QImage::Format_RGB32); - - QPainter painter; - painter.begin(&midImage); - painter.setPen(Qt::NoPen); - painter.fillRect(midImage.rect(), slightlyOpaqueBlack); - painter.end(); -//! [0] + if (!m_standardPalette.isBrushSet(QPalette::Disabled, QPalette::Mid)) { + QColor brown(212, 140, 95); + QColor beige(236, 182, 120); + QColor slightlyOpaqueBlack(0, 0, 0, 63); + + QImage backgroundImage(":/images/woodbackground.png"); + QImage buttonImage(":/images/woodbutton.png"); + QImage midImage = buttonImage.convertToFormat(QImage::Format_RGB32); + + QPainter painter; + painter.begin(&midImage); + painter.setPen(Qt::NoPen); + painter.fillRect(midImage.rect(), slightlyOpaqueBlack); + painter.end(); + //! [0] + + //! [1] + QPalette palette(brown); + + palette.setBrush(QPalette::BrightText, Qt::white); + palette.setBrush(QPalette::Base, beige); + palette.setBrush(QPalette::Highlight, Qt::darkGreen); + setTexture(palette, QPalette::Button, buttonImage); + setTexture(palette, QPalette::Mid, midImage); + setTexture(palette, QPalette::Window, backgroundImage); + + QBrush brush = palette.window(); + brush.setColor(brush.color().darker()); + + palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Text, brush); + palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Base, brush); + palette.setBrush(QPalette::Disabled, QPalette::Button, brush); + palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); + + m_standardPalette = palette; + } -//! [1] - palette = QPalette(brown); - - palette.setBrush(QPalette::BrightText, Qt::white); - palette.setBrush(QPalette::Base, beige); - palette.setBrush(QPalette::Highlight, Qt::darkGreen); - setTexture(palette, QPalette::Button, buttonImage); - setTexture(palette, QPalette::Mid, midImage); - setTexture(palette, QPalette::Window, backgroundImage); - - QBrush brush = palette.window(); - brush.setColor(brush.color().darker()); - - palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); - palette.setBrush(QPalette::Disabled, QPalette::Text, brush); - palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); - palette.setBrush(QPalette::Disabled, QPalette::Base, brush); - palette.setBrush(QPalette::Disabled, QPalette::Button, brush); - palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); + return m_standardPalette; } //! [1] diff --git a/examples/widgets/widgets/styles/norwegianwoodstyle.h b/examples/widgets/widgets/styles/norwegianwoodstyle.h index 5a1783eb4d..62ca502d05 100644 --- a/examples/widgets/widgets/styles/norwegianwoodstyle.h +++ b/examples/widgets/widgets/styles/norwegianwoodstyle.h @@ -66,7 +66,8 @@ class NorwegianWoodStyle : public QProxyStyle public: NorwegianWoodStyle(); - void polish(QPalette &palette) override; + QPalette standardPalette() const override; + void polish(QWidget *widget) override; void unpolish(QWidget *widget) override; int pixelMetric(PixelMetric metric, const QStyleOption *option, @@ -82,6 +83,7 @@ private: static void setTexture(QPalette &palette, QPalette::ColorRole role, const QImage &image); static QPainterPath roundRectPath(const QRect &rect); + mutable QPalette m_standardPalette; }; //! [0] |