diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-12-30 13:55:27 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2021-01-14 05:43:14 +0000 |
commit | 1bcfada9f04bd20a7a64d448fbf60c0f0820ed09 (patch) | |
tree | ff944b46ed1918663099b1b0b7020e16ae7d1d63 /src/widgets/styles | |
parent | 47c6b5b91e0d1271075d98ded5aa7a25296b5ee3 (diff) |
QStyle: add name() to return the name of the style
Currently there is no way to get the name of the current style to e.g.
create a QProxyStyle for a specific widget only.
Therefore add QStyle::name() so QProxyStyle(const QString &) can be
called without hard-coding the style name.
Remove an unused doc snippet as drive-by.
Fixes: QTBUG-8004
Change-Id: I466c5e870a5392b238365bdc930f6a2ecee50cdb
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/styles')
-rw-r--r-- | src/widgets/styles/qproxystyle.cpp | 7 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.cpp | 24 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.h | 6 | ||||
-rw-r--r-- | src/widgets/styles/qstyle_p.h | 1 | ||||
-rw-r--r-- | src/widgets/styles/qstylefactory.cpp | 4 |
5 files changed, 41 insertions, 1 deletions
diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp index ecad637957..31fe587ce2 100644 --- a/src/widgets/styles/qproxystyle.cpp +++ b/src/widgets/styles/qproxystyle.cpp @@ -72,6 +72,13 @@ QT_BEGIN_NAMESPACE or system controlled styles. It would not work on a Mac, for example, where menus are handled by the operating system. + When a proxy style should be set on a specific widget only, you have + to make sure to not set the proxy on the global application style which + is returned by QWidget::style(). You have to create a separate custom style + for the widget similar to: + + \snippet code/src_gui_qproxystyle.cpp 2 + \sa QStyle */ diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 239d873649..9f49a55386 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -422,6 +422,30 @@ QStyle::~QStyle() } /*! + Returns the name of the style. + + This value can be used to create a style with QStyleFactory::create(). + + \sa QStyleFactory::create() + \since 6.1 +*/ +QString QStyle::name() const +{ + Q_D(const QStyle); + return d->name; +} + +/*! + \internal + Set the style name +*/ +void QStyle::setName(const QString &name) +{ + Q_D(QStyle); + d->name = name; +} + +/*! Initializes the appearance of the given \a widget. This function is called for every widget at some point after it diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h index 0e3495306c..ec13fdb80d 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -73,6 +73,8 @@ public: QStyle(); virtual ~QStyle(); + QString name() const; + virtual void polish(QWidget *widget); virtual void unpolish(QWidget *widget); @@ -855,12 +857,16 @@ public: const QStyle * proxy() const; private: + void setName(const QString &name); + +private: Q_DISABLE_COPY(QStyle) friend class QWidget; friend class QWidgetPrivate; friend class QApplication; friend class QProxyStyle; friend class QProxyStylePrivate; + friend class QStyleFactory; void setProxy(QStyle *style); }; diff --git a/src/widgets/styles/qstyle_p.h b/src/widgets/styles/qstyle_p.h index 7942cafaf7..ab451d4873 100644 --- a/src/widgets/styles/qstyle_p.h +++ b/src/widgets/styles/qstyle_p.h @@ -72,6 +72,7 @@ public: mutable int layoutSpacingIndex; QStyle *proxyStyle; + QString name; }; inline QImage styleCacheImage(const QSize &size) diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index 87a8000ce0..70d08468ca 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -109,8 +109,10 @@ QStyle *QStyleFactory::create(const QString& key) { } // Keep these here - they make the #ifdefery above work if (!ret) ret = qLoadPlugin<QStyle, QStylePlugin>(loader(), style); - if (ret) + if (ret) { ret->setObjectName(style); + ret->setName(style); + } return ret; } |