Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qstylehelper.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <qstyleoption.h>
5#include <qpainter.h>
6#include <qpixmapcache.h>
7#include <private/qhighdpiscaling_p.h>
8#include <private/qguiapplication_p.h>
9#include <private/qmath_p.h>
10#include <private/qstyle_p.h>
11#include <qmath.h>
12#if QT_CONFIG(scrollbar)
13#include <qscrollbar.h>
14#endif
15#include <qabstractscrollarea.h>
16#include <qwindow.h>
17
18#include <qmetaobject.h>
19#include "qstylehelper_p.h"
20#include <qstringbuilder.h>
21
23
24Q_GUI_EXPORT int qt_defaultDpiX();
25
26namespace QStyleHelper {
27
29{
30 const QStyleOptionComplex *complexOption = qstyleoption_cast<const QStyleOptionComplex *>(option);
31 QString tmp = key % HexString<uint>(option->state)
32 % HexString<uint>(option->direction)
33 % HexString<uint>(complexOption ? uint(complexOption->activeSubControls) : 0u)
34 % HexString<quint64>(option->palette.cacheKey())
35 % HexString<uint>(size.width())
36 % HexString<uint>(size.height());
37
38#if QT_CONFIG(spinbox)
39 if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
42 % QChar(spinBox->frame ? u'1' : u'0');
43 }
44#endif // QT_CONFIG(spinbox)
45
46 return tmp;
47}
48
49#ifdef Q_OS_DARWIN
50static const qreal qstyleBaseDpi = 72;
51#else
52static const qreal qstyleBaseDpi = 96;
53#endif
54
55Q_WIDGETS_EXPORT qreal dpi(const QStyleOption *option)
56{
57#ifndef Q_OS_DARWIN
58 // Prioritize the application override, except for on macOS where
59 // we have historically not supported the AA_Use96Dpi flag.
61 return 96;
62#endif
63
64 // Expect that QStyleOption::QFontMetrics::QFont has the correct DPI set
65 if (option)
66 return option->fontMetrics.fontDpi();
67
68 // Fall back to historical Qt behavior: hardocded 72 DPI on mac,
69 // primary screen DPI on other platforms.
70#ifdef Q_OS_DARWIN
71 return qstyleBaseDpi;
72#else
73 return qt_defaultDpiX();
74#endif
75}
76
77Q_WIDGETS_EXPORT qreal dpiScaled(qreal value, qreal dpi)
78{
79 return value * dpi / qstyleBaseDpi;
80}
81
82Q_WIDGETS_EXPORT qreal dpiScaled(qreal value, const QPaintDevice *device)
83{
84 return dpiScaled(value, device->logicalDpiX());
85}
86
87Q_WIDGETS_EXPORT qreal dpiScaled(qreal value, const QStyleOption *option)
88{
89 return dpiScaled(value, dpi(option));
90}
91
92#if QT_CONFIG(accessibility)
93bool isInstanceOf(QObject *obj, QAccessible::Role role)
94{
95 bool match = false;
96 QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(obj);
97 match = iface && iface->role() == role;
98 return match;
99}
100
101// Searches for an ancestor of a particular accessible role
102bool hasAncestor(QObject *obj, QAccessible::Role role)
103{
104 bool found = false;
105 QObject *parent = obj ? obj->parent() : nullptr;
106 while (parent && !found) {
107 if (isInstanceOf(parent, role))
108 found = true;
109 parent = parent->parent();
110 }
111 return found;
112}
113#endif // QT_CONFIG(accessibility)
114
115
116#if QT_CONFIG(dial)
117
118int calcBigLineSize(int radius)
119{
120 int bigLineSize = radius / 6;
121 if (bigLineSize < 4)
122 bigLineSize = 4;
123 if (bigLineSize > radius / 2)
124 bigLineSize = radius / 2;
125 return bigLineSize;
126}
127
128static QPointF calcRadialPos(const QStyleOptionSlider *dial, qreal offset)
129{
130 const int width = dial->rect.width();
131 const int height = dial->rect.height();
132 const int r = qMin(width, height) / 2;
133 const int currentSliderPosition = dial->upsideDown ? dial->sliderPosition : (dial->maximum - dial->sliderPosition);
134 qreal a = 0;
135 if (dial->maximum == dial->minimum)
136 a = Q_PI / 2;
137 else if (dial->dialWrapping)
138 a = Q_PI * 3 / 2 - (currentSliderPosition - dial->minimum) * 2 * Q_PI
139 / (dial->maximum - dial->minimum);
140 else
141 a = (Q_PI * 8 - (currentSliderPosition - dial->minimum) * 10 * Q_PI
142 / (dial->maximum - dial->minimum)) / 6;
143 qreal xc = width / 2.0;
144 qreal yc = height / 2.0;
145 qreal len = r - QStyleHelper::calcBigLineSize(r) - 3;
146 qreal back = offset * len;
147 QPointF pos(QPointF(xc + back * qCos(a), yc - back * qSin(a)));
148 return pos + dial->rect.topLeft();
149}
150
151qreal angle(const QPointF &p1, const QPointF &p2)
152{
153 static const qreal rad_factor = 180 / Q_PI;
154 qreal _angle = 0;
155
156 if (p1.x() == p2.x()) {
157 if (p1.y() < p2.y())
158 _angle = 270;
159 else
160 _angle = 90;
161 } else {
162 qreal x1, x2, y1, y2;
163
164 if (p1.x() <= p2.x()) {
165 x1 = p1.x(); y1 = p1.y();
166 x2 = p2.x(); y2 = p2.y();
167 } else {
168 x2 = p1.x(); y2 = p1.y();
169 x1 = p2.x(); y1 = p2.y();
170 }
171
172 qreal m = -(y2 - y1) / (x2 - x1);
173 _angle = qAtan(m) * rad_factor;
174
175 if (p1.x() < p2.x())
176 _angle = 180 - _angle;
177 else
178 _angle = -_angle;
179 }
180 return _angle;
181}
182
183QPolygonF calcLines(const QStyleOptionSlider *dial)
184{
185 QPolygonF poly;
186 int width = dial->rect.width();
187 int height = dial->rect.height();
188 qreal r = qMin(width, height) / 2;
189 int bigLineSize = calcBigLineSize(int(r));
190
191 qreal xc = width / 2 + 0.5;
192 qreal yc = height / 2 + 0.5;
193 const int ns = dial->tickInterval;
194 if (!ns) // Invalid values may be set by Qt Designer.
195 return poly;
196 int notches = (dial->maximum + ns - 1 - dial->minimum) / ns;
197 if (notches <= 0)
198 return poly;
199 if (dial->maximum < dial->minimum || dial->maximum - dial->minimum > 1000) {
200 int maximum = dial->minimum + 1000;
201 notches = (maximum + ns - 1 - dial->minimum) / ns;
202 }
203
204 poly.resize(2 + 2 * notches);
205 int smallLineSize = bigLineSize / 2;
206 for (int i = 0; i <= notches; ++i) {
207 qreal angle = dial->dialWrapping ? Q_PI * 3 / 2 - i * 2 * Q_PI / notches
208 : (Q_PI * 8 - i * 10 * Q_PI / notches) / 6;
209 qreal s = qSin(angle);
210 qreal c = qCos(angle);
211 if (i == 0 || (((ns * i) % (dial->pageStep ? dial->pageStep : 1)) == 0)) {
212 poly[2 * i] = QPointF(xc + (r - bigLineSize) * c,
213 yc - (r - bigLineSize) * s);
214 poly[2 * i + 1] = QPointF(xc + r * c, yc - r * s);
215 } else {
216 poly[2 * i] = QPointF(xc + (r - 1 - smallLineSize) * c,
217 yc - (r - 1 - smallLineSize) * s);
218 poly[2 * i + 1] = QPointF(xc + (r - 1) * c, yc -(r - 1) * s);
219 }
220 }
221 return poly.translated(dial->rect.topLeft());
222}
223
224// This will draw a nice and shiny QDial for us. We don't want
225// all the shinyness in QWindowsStyle, hence we place it here
226
227void drawDial(const QStyleOptionSlider *option, QPainter *painter)
228{
229 const QPalette pal = option->palette;
230 QColor buttonColor = pal.button().color();
231 const int width = option->rect.width();
232 const int height = option->rect.height();
233 const bool enabled = option->state & QStyle::State_Enabled;
234 qreal r = qMin(width, height) / 2;
235 r -= r/50;
236 const qreal penSize = r/20.0;
237
238 painter->save();
240
241 // Draw notches
242 if (option->subControls & QStyle::SC_DialTickmarks) {
243 const bool inverted = pal.window().color().lightness() < pal.text().color().lightness()
244 && pal.light().color().lightness() > pal.dark().color().lightness();
245 const QColor notchColor = inverted ? pal.light().color().lighter(120)
246 : pal.dark().color().darker(120);
247 painter->setPen(notchColor);
248 painter->drawLines(QStyleHelper::calcLines(option));
249 }
250
251 // setting color before BEGIN_STYLE_PIXMAPCACHE since
252 // otherwise it is not set when the image is in the cache
253 buttonColor.setHsv(buttonColor .hue(),
254 qMin(140, buttonColor .saturation()),
255 qMax(180, buttonColor.value()));
256
257 // Cache dial background
259 p->setRenderHint(QPainter::Antialiasing);
260
261 const qreal d_ = r / 6;
262 const qreal dx = d_ + (width - 2 * r) / 2 + 1;
263 const qreal dy = d_ + (height - 2 * r) / 2 + 1;
264
265 QRectF br = QRectF(dx + 0.5, dy + 0.5,
266 int(r * 2 - 2 * d_ - 2),
267 int(r * 2 - 2 * d_ - 2));
268
269 if (enabled) {
270 // Drop shadow
271 qreal shadowSize = qMax(1.0, penSize/2.0);
272 QRectF shadowRect= br.adjusted(-2*shadowSize, -2*shadowSize,
273 2*shadowSize, 2*shadowSize);
274 QRadialGradient shadowGradient(shadowRect.center().x(),
275 shadowRect.center().y(), shadowRect.width()/2.0,
276 shadowRect.center().x(), shadowRect.center().y());
277 shadowGradient.setColorAt(qreal(0.91), QColor(0, 0, 0, 40));
278 shadowGradient.setColorAt(qreal(1.0), Qt::transparent);
279 p->setBrush(shadowGradient);
280 p->setPen(Qt::NoPen);
281 p->translate(shadowSize, shadowSize);
282 p->drawEllipse(shadowRect);
283 p->translate(-shadowSize, -shadowSize);
284
285 // Main gradient
286 QRadialGradient gradient(br.center().x() - br.width()/3, dy,
287 br.width()*1.3, br.center().x(),
288 br.center().y() - br.height()/2);
289 gradient.setColorAt(0, buttonColor.lighter(110));
290 gradient.setColorAt(qreal(0.5), buttonColor);
291 gradient.setColorAt(qreal(0.501), buttonColor.darker(102));
292 gradient.setColorAt(1, buttonColor.darker(115));
293 p->setBrush(gradient);
294 } else {
295 p->setBrush(Qt::NoBrush);
296 }
297
298 p->setPen(QPen(buttonColor.darker(280)));
299 p->drawEllipse(br);
300 p->setBrush(Qt::NoBrush);
301 p->setPen(buttonColor.lighter(110));
302 p->drawEllipse(br.adjusted(1, 1, -1, -1));
303
304 if (option->state & QStyle::State_HasFocus) {
305 QColor highlight = pal.highlight().color();
306 highlight.setHsv(highlight.hue(),
307 qMin(160, highlight.saturation()),
308 qMax(230, highlight.value()));
309 highlight.setAlpha(127);
310 p->setPen(QPen(highlight, 2.0));
311 p->setBrush(Qt::NoBrush);
312 p->drawEllipse(br.adjusted(-1, -1, 1, 1));
313 }
314
316
317 QPointF dp = calcRadialPos(option, qreal(0.70));
318 buttonColor = buttonColor.lighter(104);
319 buttonColor.setAlphaF(0.8f);
320 const qreal ds = r/qreal(7.0);
321 QRectF dialRect(dp.x() - ds, dp.y() - ds, 2*ds, 2*ds);
322 QRadialGradient dialGradient(dialRect.center().x() + dialRect.width()/2,
323 dialRect.center().y() + dialRect.width(),
324 dialRect.width()*2,
325 dialRect.center().x(), dialRect.center().y());
326 dialGradient.setColorAt(1, buttonColor.darker(140));
327 dialGradient.setColorAt(qreal(0.4), buttonColor.darker(120));
328 dialGradient.setColorAt(0, buttonColor.darker(110));
329 if (penSize > 3.0) {
330 painter->setPen(QPen(QColor(0, 0, 0, 25), penSize));
331 painter->drawLine(calcRadialPos(option, qreal(0.90)), calcRadialPos(option, qreal(0.96)));
332 }
333
334 painter->setBrush(dialGradient);
335 painter->setPen(QColor(255, 255, 255, 150));
336 painter->drawEllipse(dialRect.adjusted(-1, -1, 1, 1));
337 painter->setPen(QColor(0, 0, 0, 80));
338 painter->drawEllipse(dialRect);
339 painter->restore();
340}
341#endif //QT_CONFIG(dial)
342
344 int left, int top, int right,
345 int bottom)
346{
347 QSize size = pixmap.size();
348 //painter->setRenderHint(QPainter::SmoothPixmapTransform);
349
350 //top
351 if (top > 0) {
352 painter->drawPixmap(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), pixmap,
353 QRect(left, 0, size.width() -right - left, top));
354
355 //top-left
356 if (left > 0)
357 painter->drawPixmap(QRect(rect.left(), rect.top(), left, top), pixmap,
358 QRect(0, 0, left, top));
359
360 //top-right
361 if (right > 0)
362 painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top(), right, top), pixmap,
363 QRect(size.width() - right, 0, right, top));
364 }
365
366 //left
367 if (left > 0)
368 painter->drawPixmap(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), pixmap,
369 QRect(0, top, left, size.height() - bottom - top));
370
371 //center
372 painter->drawPixmap(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left,
373 rect.height() - bottom - top), pixmap,
374 QRect(left, top, size.width() -right -left,
375 size.height() - bottom - top));
376 //right
377 if (right > 0)
378 painter->drawPixmap(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), pixmap,
379 QRect(size.width() - right, top, right, size.height() - bottom - top));
380
381 //bottom
382 if (bottom > 0) {
383 painter->drawPixmap(QRect(rect.left() +left, rect.top() + rect.height() - bottom,
384 rect.width() - right - left, bottom), pixmap,
385 QRect(left, size.height() - bottom,
386 size.width() - right - left, bottom));
387 //bottom-left
388 if (left > 0)
389 painter->drawPixmap(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), pixmap,
390 QRect(0, size.height() - bottom, left, bottom));
391
392 //bottom-right
393 if (right > 0)
394 painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), pixmap,
395 QRect(size.width() - right, size.height() - bottom, right, bottom));
396
397 }
398}
399
401{
402#if QT_CONFIG(scrollarea)
403 if (qobject_cast<const QScrollBar *>(widget) && widget->parent() &&
404 qobject_cast<const QAbstractScrollArea *>(widget->parent()->parent()))
406#else
408#endif
409 return pal.color(QPalette::Base);
410}
411
413{
414 while (widget) {
416 return SizeMini;
418 return SizeSmall;
420 return SizeLarge;
421 }
423 }
424
426 return SizeMini;
427 else if (opt && opt->state & QStyle::State_Small)
428 return SizeSmall;
429
430 return SizeDefault;
431}
432
433}
IOBluetoothDevice * device
bool frame
whether the spin box draws itself with a frame
ButtonSymbols buttonSymbols
the current button symbol mode
virtual StepEnabled stepEnabled() const
Virtual function that determines whether stepping up and down is legal at any given time.
const QColor & color() const
Returns the brush color.
Definition qbrush.h:121
\inmodule QtCore
Definition qchar.h:48
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
int saturation() const noexcept
Returns the HSV saturation color component of this color.
Definition qcolor.cpp:1734
void setAlphaF(float alpha)
Sets the alpha of this color to alpha.
Definition qcolor.cpp:1511
QColor darker(int f=200) const noexcept
Definition qcolor.cpp:2857
int lightness() const noexcept
Definition qcolor.cpp:1860
int hue() const noexcept
Returns the HSV hue color component of this color.
Definition qcolor.cpp:1708
void setAlpha(int alpha)
Sets the alpha of this color to alpha.
Definition qcolor.cpp:1481
void setHsv(int h, int s, int v, int a=255)
Sets a HSV color value; h is the hue, s is the saturation, v is the value and a is the alpha componen...
Definition qcolor.cpp:1099
int value() const noexcept
Returns the value color component of this color.
Definition qcolor.cpp:1756
QColor lighter(int f=150) const noexcept
Definition qcolor.cpp:2812
static bool testAttribute(Qt::ApplicationAttribute attribute)
Returns true if attribute attribute is set; otherwise returns false.
void resize(qsizetype size)
Definition qlist.h:392
\inmodule QtCore
Definition qobject.h:90
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
void setPen(const QColor &color)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void drawLine(const QLineF &line)
Draws a line defined by line.
Definition qpainter.h:442
void restore()
Restores the current painter state (pops a saved state off the stack).
void drawLines(const QLineF *lines, int lineCount)
Draws the first lineCount lines in the array lines using the current pen.
void save()
Saves the current painter state (pushes the state onto a stack).
void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect)
Draws the rectangular portion source of the given pixmap into the given target in the paint device.
void drawEllipse(const QRectF &r)
Draws the ellipse defined by the given rectangle.
void setBrush(const QBrush &brush)
Sets the painter's brush to the given brush.
@ Antialiasing
Definition qpainter.h:52
void setRenderHint(RenderHint hint, bool on=true)
Sets the given render hint on the painter if on is true; otherwise clears the render hint.
The QPalette class contains color groups for each widget state.
Definition qpalette.h:19
const QBrush & highlight() const
Returns the highlight brush of the current color group.
Definition qpalette.h:97
const QBrush & button() const
Returns the button brush of the current color group.
Definition qpalette.h:83
const QBrush & text() const
Returns the text foreground brush of the current color group.
Definition qpalette.h:87
const QBrush & dark() const
Returns the dark brush of the current color group.
Definition qpalette.h:85
const QBrush & light() const
Returns the light brush of the current color group.
Definition qpalette.h:84
const QColor & color(ColorGroup cg, ColorRole cr) const
Returns the color in the specified color group, used for the given color role.
Definition qpalette.h:66
const QBrush & window() const
Returns the window (general background) brush of the current color group.
Definition qpalette.h:92
\inmodule QtGui
Definition qpen.h:25
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
\inmodule QtCore\reentrant
Definition qpoint.h:214
constexpr qreal x() const noexcept
Returns the x coordinate of this point.
Definition qpoint.h:333
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
Definition qpoint.h:338
The QPolygonF class provides a list of points using floating point precision.
Definition qpolygon.h:96
QPolygonF translated(qreal dx, qreal dy) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qpolygon.h:147
\inmodule QtGui
Definition qbrush.h:412
\inmodule QtCore\reentrant
Definition qrect.h:483
constexpr qreal width() const noexcept
Returns the width of the rectangle.
Definition qrect.h:715
constexpr QRectF adjusted(qreal x1, qreal y1, qreal x2, qreal y2) const noexcept
Returns a new rectangle with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of ...
Definition qrect.h:799
constexpr QPointF center() const noexcept
Returns the center point of the rectangle.
Definition qrect.h:685
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:5710
\variable QStyleOptionMenuItem::menuItemType
QStyle::SubControls activeSubControls
The QStyleOption class stores the parameters used by QStyle functions.
QStyle::State state
@ State_HasFocus
Definition qstyle.h:75
@ State_Mini
Definition qstyle.h:96
@ State_Small
Definition qstyle.h:95
@ State_Enabled
Definition qstyle.h:67
@ SC_DialTickmarks
Definition qstyle.h:388
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
QPalette palette
the widget's palette
Definition qwidget.h:132
QWidget * parentWidget() const
Returns the parent of this widget, or \nullptr if it does not have any parent widget.
Definition qwidget.h:904
bool testAttribute(Qt::WidgetAttribute) const
Returns true if attribute attribute is set on this widget; otherwise returns false.
Definition qwidget.h:910
QOpenGLWidget * widget
[1]
QPixmap p2
QPixmap p1
[0]
rect
[4]
QStyleOptionButton opt
int calcBigLineSize(int radius)
QPolygonF calcLines(const QStyleOptionSlider *dial)
void drawDial(const QStyleOptionSlider *option, QPainter *painter)
void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, int left, int top, int right, int bottom)
Q_WIDGETS_EXPORT qreal dpiScaled(qreal value, qreal dpi)
QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size)
Q_WIDGETS_EXPORT qreal dpi(const QStyleOption *option)
WidgetSizePolicy widgetSizePolicy(const QWidget *widget, const QStyleOption *opt)
QColor backgroundColor(const QPalette &pal, const QWidget *widget)
static const qreal qstyleBaseDpi
Combined button and popup list for selecting options.
@ WA_MacMiniSize
Definition qnamespace.h:362
@ WA_MacNormalSize
Definition qnamespace.h:360
@ WA_MacSmallSize
Definition qnamespace.h:361
@ transparent
Definition qnamespace.h:46
@ NoPen
@ AA_Use96Dpi
Definition qnamespace.h:432
@ NoBrush
QVector3D maximum(const QVector3D &v1, const QVector3D &v2) Q_DECL_NOTHROW
Definition qssgutils_p.h:53
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
Q_GUI_EXPORT int qt_defaultDpiX()
Definition qfont.cpp:107
auto qCos(T v)
Definition qmath.h:60
auto qAtan(T v)
Definition qmath.h:84
auto qSin(T v)
Definition qmath.h:54
static QT_BEGIN_NAMESPACE const qreal Q_PI
Definition qmath_p.h:24
constexpr const T & qMin(const T &a, const T &b)
Definition qminmax.h:40
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
const GLfloat * m
GLuint64 key
GLint GLsizei GLsizei height
GLboolean GLboolean GLboolean GLboolean a
[7]
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLboolean r
[2]
GLuint GLfloat GLfloat GLfloat x1
GLdouble GLdouble GLdouble GLdouble top
GLdouble GLdouble right
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLint GLsizei width
GLint left
GLint GLint bottom
GLfloat angle
GLenum GLuint GLintptr offset
GLhandleARB obj
[2]
const GLubyte * c
GLfixed GLfixed GLfixed y2
GLenum GLsizei len
GLfixed GLfixed x2
GLdouble s
[6]
Definition qopenglext.h:235
GLfloat GLfloat p
[1]
GLuint GLenum option
#define BEGIN_STYLE_PIXMAPCACHE(a)
Definition qstyle_p.h:58
#define END_STYLE_PIXMAPCACHE
Definition qstyle_p.h:79
QT_BEGIN_NAMESPACE Q_GUI_EXPORT int qt_defaultDpiX()
Definition qfont.cpp:107
#define Q_UNUSED(x)
static bool match(const uchar *found, uint foundLen, const char *target, uint targetLen)
unsigned int uint
Definition qtypes.h:29
double qreal
Definition qtypes.h:92
widget render & pixmap
QPainter painter(this)
[7]
QSpinBox * spinBox
[0]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent