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
qqc2qstyle_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 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// Qt-Security score:significant reason:default
4
5#ifndef QQC2QSTYLE_P_H
6#define QQC2QSTYLE_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtGui/qicon.h>
20#include <QtGui/qpalette.h>
21#include <QtGui/qpixmap.h>
22#include <QtGui/qwindow.h>
23
24#include <QtCore/qobject.h>
25#include <QtCore/qrect.h>
26#include <QtCore/qsize.h>
27
28QT_BEGIN_NAMESPACE
29
30class QAction;
31class QDebug;
32class QFontMetrics;
33
34namespace QQC2 {
35
37class QStyleOption;
39class QStylePrivate;
40
41class QStyle : public QObject
42{
43 Q_OBJECT
44 Q_DECLARE_PRIVATE(QStyle)
45
46protected:
48
49public:
50 QStyle();
51 virtual ~QStyle();
52
53 enum StateFlag {
54 State_None = 0x00000000,
55 State_Enabled = 0x00000001,
56 State_Raised = 0x00000002,
57 State_Sunken = 0x00000004,
58 State_Off = 0x00000008,
59 State_NoChange = 0x00000010,
60 State_On = 0x00000020,
61 State_DownArrow = 0x00000040,
62 State_Horizontal = 0x00000080,
63 State_HasFocus = 0x00000100,
64 State_Top = 0x00000200,
65 State_Bottom = 0x00000400,
66 State_FocusAtBorder = 0x00000800,
67 State_AutoRaise = 0x00001000,
68 State_MouseOver = 0x00002000,
69 State_UpArrow = 0x00004000,
70 State_Selected = 0x00008000,
71 State_Active = 0x00010000,
72 State_Window = 0x00020000,
73 State_Open = 0x00040000,
74 State_Children = 0x00080000,
75 State_Item = 0x00100000,
76 State_Sibling = 0x00200000,
77 State_Editing = 0x00400000,
79#ifdef QT_KEYPAD_NAVIGATION
80 State_HasEditFocus = 0x01000000,
81#endif
82 State_ReadOnly = 0x02000000,
83 State_Small = 0x04000000,
84 State_Mini = 0x08000000
85 };
88
103
110
134
136
139
141 PE_PanelItemViewRow, // ### Qt 6: remove
142
144
147
149
150 // do not add any values below/greater this
151 PE_CustomBase = 0xf000000
152 };
153 Q_ENUM(PrimitiveElement)
154
222 Q_ENUM(ControlElement)
223
227
232
237
239
241
245
247
250
256
260
262
265
270
283
287
291
295
297
299
303
304 // do not add any values below/greater than this
305 SE_CustomBase = 0xf0000000
306 };
307 Q_ENUM(SubElement)
308
324 Q_ENUM(ComplexControl)
325
327 SC_None = 0x00000000,
328
333 SC_ScrollBarFirst = 0x00000010,
334 SC_ScrollBarLast = 0x00000020,
335 SC_ScrollBarSlider = 0x00000040,
336 SC_ScrollBarGroove = 0x00000080,
337
338 SC_SpinBoxUp = 0x00000001,
339 SC_SpinBoxDown = 0x00000002,
340 SC_SpinBoxFrame = 0x00000004,
342
343 SC_ComboBoxFrame = 0x00000001,
345 SC_ComboBoxArrow = 0x00000004,
347
353
354 SC_SliderGroove = 0x00000001,
355 SC_SliderHandle = 0x00000002,
356 SC_SliderTickmarks = 0x00000004,
357
358 SC_ToolButton = 0x00000001,
359 SC_ToolButtonMenu = 0x00000002,
360
361 SC_TitleBarSysMenu = 0x00000001,
369 SC_TitleBarLabel = 0x00000100,
370
371 SC_DialGroove = 0x00000001,
372 SC_DialHandle = 0x00000002,
373 SC_DialTickmarks = 0x00000004,
374
376 SC_GroupBoxLabel = 0x00000002,
378 SC_GroupBoxFrame = 0x00000008,
379
380 SC_MdiMinButton = 0x00000001,
381 SC_MdiNormalButton = 0x00000002,
382 SC_MdiCloseButton = 0x00000004,
383
384 SC_CustomBase = 0xf0000000,
385 SC_All = 0xffffffff
386 };
387 Q_ENUM(SubControl)
389
396
401
403
406
407 PM_SliderThickness, // total slider thickness
408 PM_SliderControlThickness, // thickness of the business part
409 PM_SliderLength, // total length of slider
411 PM_SliderSpaceAvailable, // available space for slider to move
412
416
422
424
427
434
439
444
448
451
458
465
467
471
477
480
488
490
499
501
504
509
512
515
526
527 // do not add any values below/greater than this
528 PM_CustomBase = 0xf0000000
529 };
530 Q_ENUM(PixelMetric)
531
562 Q_ENUM(ContentsType)
563
568 Q_ENUM(RequestSoftwareInputPanel)
569
674 // Whether we should use a native popup.
675 // Only supported for non-editable combo boxes on macOS so far.
691 // Add new style hint values here
692
693 SH_CustomBase = 0xf0000000
694 };
695 Q_ENUM(StyleHint)
696
776 // do not add any values below/greater than this
777 SP_CustomBase = 0xf0000000
778 };
779 Q_ENUM(StandardPixmap)
780
781 virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const;
782 virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
783 virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const = 0;
784 virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const = 0;
785
786 virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const = 0;
787 virtual QFont font(ControlElement element, const QStyle::State state) const = 0;
788 virtual QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const = 0;
789 virtual QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const = 0;
790
791 virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const = 0;
792
793 virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr) const = 0;
794 virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = nullptr, QStyleHintReturn* returnData = nullptr) const = 0;
795
796 virtual void drawItemText(QPainter *painter, const QRect &rect,
797 int flags, const QPalette &pal, bool enabled,
798 const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const;
799 virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const;
800 virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const = 0;
801 virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const = 0;
802 virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const = 0;
803
804 virtual QPalette standardPalette() const;
805 virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = nullptr) const = 0;
806 virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr) const = 0;
807 virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0;
808 virtual void polish() { }
809
810 static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect);
811 static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos);
812 static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown = false);
813 static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown = false);
814 static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment);
815 static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle);
816
817 // TODO: Remove the concept of proxy (but keep it for now until everything builds)
818 const QStyle *proxy() const { return this; }
819
820 virtual void handleThemeChange() {}
821
822private:
824};
825
826Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::State)
828
829} // namespace QQC2
830
831QT_END_NAMESPACE
832
833#endif // QQC2QSTYLE_P_H
virtual void polish()
const QStyle * proxy() const
virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt=nullptr) const =0
virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
virtual QPalette standardPalette() const
virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const =0
static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment)
virtual int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr) const =0
virtual void handleThemeChange()
virtual ~QStyle()
virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const =0
virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const =0
virtual QFont font(ControlElement element, const QStyle::State state) const =0
static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle)
virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const =0
static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown=false)
virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const =0
static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect)
virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const =0
static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown=false)
virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const =0
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt=nullptr, QStyleHintReturn *returnData=nullptr) const =0
@ State_KeyboardFocusChange
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr) const =0
virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole=QPalette::NoRole) const
virtual QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const =0
virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const =0
virtual QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const =0
static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos)