From 072ca960f517f0cdfcb768dcbeebba2212a6c21e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 20 Jun 2019 14:50:48 +0200 Subject: styles example: Set default style up front, and react to style changes Allows running the example with -style foo or QT_STYLE_OVERRIDE. No changes to documentation needed. Change-Id: Id7cef450f13faabd118badde51afb7273439c9fc Reviewed-by: Timur Pocheptsov --- examples/widgets/widgets/styles/main.cpp | 3 +++ .../widgets/widgets/styles/norwegianwoodstyle.cpp | 1 + examples/widgets/widgets/styles/widgetgallery.cpp | 26 ++++++++++++++++++---- examples/widgets/widgets/styles/widgetgallery.h | 4 ++++ 4 files changed, 30 insertions(+), 4 deletions(-) (limited to 'examples/widgets/widgets/styles') diff --git a/examples/widgets/widgets/styles/main.cpp b/examples/widgets/widgets/styles/main.cpp index d340719984..471589d3ad 100644 --- a/examples/widgets/widgets/styles/main.cpp +++ b/examples/widgets/widgets/styles/main.cpp @@ -50,12 +50,15 @@ #include +#include "norwegianwoodstyle.h" #include "widgetgallery.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(styles); + QApplication::setStyle(new NorwegianWoodStyle); + QApplication app(argc, argv); WidgetGallery gallery; gallery.show(); diff --git a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp index 0f614a2e9a..bbdb626a18 100644 --- a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp +++ b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp @@ -58,6 +58,7 @@ NorwegianWoodStyle::NorwegianWoodStyle() : QProxyStyle(QStyleFactory::create("windows")) { + setObjectName("NorwegianWood"); } //! [0] diff --git a/examples/widgets/widgets/styles/widgetgallery.cpp b/examples/widgets/widgets/styles/widgetgallery.cpp index 7e1616c6c0..d70c503f53 100644 --- a/examples/widgets/widgets/styles/widgetgallery.cpp +++ b/examples/widgets/widgets/styles/widgetgallery.cpp @@ -143,6 +143,7 @@ WidgetGallery::WidgetGallery(QWidget *parent) setLayout(mainLayout); setWindowTitle(tr("Styles")); + styleChanged(); } //! [4] @@ -150,12 +151,10 @@ WidgetGallery::WidgetGallery(QWidget *parent) void WidgetGallery::changeStyle(const QString &styleName) //! [5] //! [6] { - if (styleName == "NorwegianWood") { + if (styleName == "NorwegianWood") QApplication::setStyle(new NorwegianWoodStyle); - } else { + else QApplication::setStyle(QStyleFactory::create(styleName)); - } - changePalette(); } //! [6] @@ -170,6 +169,25 @@ void WidgetGallery::changePalette() } //! [8] +void WidgetGallery::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::StyleChange) + styleChanged(); +} + +void WidgetGallery::styleChanged() +{ + auto styleName = QApplication::style()->objectName(); + for (int i = 0; i < styleComboBox->count(); ++i) { + if (QString::compare(styleComboBox->itemText(i), styleName, Qt::CaseInsensitive) == 0) { + styleComboBox->setCurrentIndex(i); + break; + } + } + + changePalette(); +} + //! [9] void WidgetGallery::advanceProgressBar() //! [9] //! [10] diff --git a/examples/widgets/widgets/styles/widgetgallery.h b/examples/widgets/widgets/styles/widgetgallery.h index 9ee65c21c4..4deee6839a 100644 --- a/examples/widgets/widgets/styles/widgetgallery.h +++ b/examples/widgets/widgets/styles/widgetgallery.h @@ -80,8 +80,12 @@ class WidgetGallery : public QDialog public: WidgetGallery(QWidget *parent = nullptr); +protected: + void changeEvent(QEvent *) override; + private slots: void changeStyle(const QString &styleName); + void styleChanged(); void changePalette(); void advanceProgressBar(); -- cgit v1.2.3