Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
stylesheet.qdoc
Go to the documentation of this file.
1
// Copyright (C) 2019 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
3
4
/*!
5
\page stylesheet.html
6
\title Qt Style Sheets
7
\brief How to use style sheets to customize the appearance of widgets.
8
9
\ingroup frameworks-technologies
10
\ingroup qt-basic-concepts
11
\ingroup qt-gui-concepts
12
13
\previouspage {Styles and Style Aware Widgets}{Styles}
14
\nextpage The Style Sheet Syntax
15
16
\keyword style sheet
17
\keyword stylesheet
18
19
Qt Style Sheets are a powerful mechanism that allows you to
20
customize the appearance of widgets, in addition to what is
21
already possible by subclassing QStyle. The concepts,
22
terminology, and syntax of Qt Style Sheets are heavily inspired
23
by HTML \l{http://www.w3.org/Style/CSS/}{Cascading Style Sheets
24
(CSS)} but adapted to the world of widgets.
25
26
Topics:
27
28
\list
29
\li \l{Overview}
30
\li \l{The Style Sheet Syntax}
31
\li \l{Qt Widgets Designer Integration}
32
\li \l{Customizing Qt Widgets Using Style Sheets}
33
\li \l{Qt Style Sheets Reference}
34
\li \l{Qt Style Sheets Examples}
35
\endlist
36
37
\note If Qt Style Sheets are used on the same widget as functions that
38
set the appearance of widgets, such as \l QWidget::setFont() or
39
\l QTreeWidgetItem::setBackground(), style sheets will take precedence
40
if the settings conflict.
41
42
\target overview
43
\section1 Overview
44
45
Styles sheets are textual specifications that can be set on the
46
whole application using QApplication::setStyleSheet() or on a
47
specific widget (and its children) using
48
QWidget::setStyleSheet(). If several style sheets are set at
49
different levels, Qt derives the effective style sheet from all
50
of those that are set. This is called cascading.
51
52
For example, the following style sheet specifies that all
53
\l{QLineEdit}s should use yellow as their background color, and
54
all \l{QCheckBox}es should use red as the text color:
55
56
\snippet code/doc_src_stylesheet.qdoc 0
57
58
For this kind of customization, style sheets are much more
59
powerful than QPalette. For example, it might be tempting to set
60
the QPalette::Button role to red for a QPushButton to obtain a
61
red push button. However, this wasn't guaranteed to work for all
62
styles, because style authors are restricted by the different
63
platforms' guidelines and (on Windows and \macos) by the
64
native theme engine.
65
66
Style sheets let you perform all kinds of customizations that are
67
difficult or impossible to perform using QPalette alone. If you
68
want yellow backgrounds for mandatory fields, red text for
69
potentially destructive push buttons, or fancy check boxes, style
70
sheets are the answer.
71
72
Style sheets are applied on top of the current \l{QStyle}{widget
73
style}, meaning that your applications will look as native as
74
possible, but any style sheet constraints will be taken into
75
consideration. Unlike palette fiddling, style sheets offer
76
guarantees: If you set the background color of a QPushButton to be
77
red, you can be assured that the button will have a red background
78
in all styles, on all platforms. In addition, \QD
79
provides style sheet integration, making it easy to view the effects
80
of a style sheet in different \l{QStyle}{widget styles}.
81
82
In addition, style sheets can be used to provide a distinctive
83
look and feel for your application, without having to subclass
84
QStyle. For example, you can specify arbitrary images for radio
85
buttons and check boxes to make them stand out. Using this
86
technique, you can also achieve minor customizations that would
87
normally require subclassing several style classes, such as
88
specifying a \l{QStyle::styleHint()}{style hint}.
89
90
When a style sheet is active, the QStyle returned by QWidget::style()
91
is a wrapper "style sheet" style, \e not the platform-specific style. The
92
wrapper style ensures that any active style sheet is respected and
93
otherwise forwards the drawing operations to the underlying,
94
platform-specific style (e.g., QWindowsVistaStyle on Windows).
95
96
Since Qt 4.5, Qt style sheets fully supports \macos.
97
98
\section1 Security Considerations
99
100
Style sheet text is parsed by Qt and can reference external resources: the
101
\c{url()} function can point at any local file or Qt resource, which Qt
102
will then load and render, for example as a background, border, or icon
103
image. Applications that construct a style sheet, in whole or in part,
104
from data that is not fully under their own control - such as a
105
runtime-selectable theme file, a path supplied via the \c{-stylesheet}
106
command-line option, or content coming from a plugin - should treat that
107
content as they would any other file path taken from an untrusted source.
108
A malicious style sheet can cause Qt to read and display the contents of
109
arbitrary local files that the application process has permission to
110
access.
111
112
Style sheets that are hardcoded in the application, or embedded in a
113
compiled-in Qt resource file, are not affected by this consideration,
114
since their content is fully controlled by the application itself.
115
*/
qtbase
src
widgets
doc
src
widgets-and-layouts
stylesheet.qdoc
Generated on
for Qt by
1.16.1