summaryrefslogtreecommitdiffstats
path: root/src/widgets/styles
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/styles')
-rw-r--r--src/widgets/styles/qproxystyle.cpp7
-rw-r--r--src/widgets/styles/qstyle.cpp24
-rw-r--r--src/widgets/styles/qstyle.h6
-rw-r--r--src/widgets/styles/qstyle_p.h1
-rw-r--r--src/widgets/styles/qstylefactory.cpp4
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;
}