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
qstyleoption.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 QSTYLEOPTION_H
6#define QSTYLEOPTION_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtCore/qlocale.h>
10#include <QtCore/qvariant.h>
11#if QT_CONFIG(spinbox)
12#include <QtWidgets/qabstractspinbox.h>
13#endif
14#include <QtGui/qicon.h>
15#include <QtGui/qtransform.h>
16#if QT_CONFIG(slider)
17#include <QtWidgets/qslider.h>
18#endif
19#include <QtWidgets/qstyle.h>
20#if QT_CONFIG(tabbar)
21#include <QtWidgets/qtabbar.h>
22#endif
23#if QT_CONFIG(tabwidget)
24#include <QtWidgets/qtabwidget.h>
25#endif
26#if QT_CONFIG(rubberband)
27#include <QtWidgets/qrubberband.h>
28#endif
29#include <QtWidgets/qframe.h>
30#if QT_CONFIG(itemviews)
31# include <QtCore/qabstractitemmodel.h>
32#endif
33
34QT_BEGIN_NAMESPACE
35
36
37class QDebug;
38
39class Q_WIDGETS_EXPORT QStyleOption
40{
41public:
42 enum OptionType {
43 SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
44 SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header,
45 SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame,
46 SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
47
48 SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
49 SO_TitleBar, SO_GroupBox, SO_SizeGrip,
50
51 SO_CustomBase = 0xf00,
52 SO_ComplexCustomBase = 0xf000000
53 };
54
55 enum StyleOptionType { Type = SO_Default };
56 enum StyleOptionVersion { Version = 1 };
57
58 int version;
59 int type;
60 QStyle::State state;
61 Qt::LayoutDirection direction;
62 QRect rect;
63 QFontMetrics fontMetrics;
64 QPalette palette;
65 QObject *styleObject;
66
67 QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
68 QStyleOption(const QStyleOption &other);
69 ~QStyleOption();
70
71 void initFrom(const QWidget *w);
72 QStyleOption &operator=(const QStyleOption &other);
73};
74
75class Q_WIDGETS_EXPORT QStyleOptionFocusRect : public QStyleOption
76{
77public:
78 enum StyleOptionType { Type = SO_FocusRect };
79 enum StyleOptionVersion { Version = 1 };
80
81 QColor backgroundColor;
82
83 QStyleOptionFocusRect();
84 QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
85 QStyleOptionFocusRect &operator=(const QStyleOptionFocusRect &) = default;
86
87protected:
88 QStyleOptionFocusRect(int version);
89};
90
91class Q_WIDGETS_EXPORT QStyleOptionFrame : public QStyleOption
92{
93public:
94 enum StyleOptionType { Type = SO_Frame };
95 enum StyleOptionVersion { Version = 1 };
96
97 int lineWidth;
98 int midLineWidth;
99 enum FrameFeature {
100 None = 0x00,
101 Flat = 0x01,
102 Rounded = 0x02
103 };
104 Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
105 FrameFeatures features;
106 QFrame::Shape frameShape;
107
108 QStyleOptionFrame();
109 QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
110 QStyleOptionFrame &operator=(const QStyleOptionFrame &) = default;
111
112protected:
113 QStyleOptionFrame(int version);
114};
115
116Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures)
117
118#if QT_CONFIG(tabwidget)
119class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
120{
121public:
122 enum StyleOptionType { Type = SO_TabWidgetFrame };
123 enum StyleOptionVersion { Version = 1 };
124
125 int lineWidth;
126 int midLineWidth;
127 QTabBar::Shape shape;
128 QSize tabBarSize;
129 QSize rightCornerWidgetSize;
130 QSize leftCornerWidgetSize;
131 QRect tabBarRect;
132 QRect selectedTabRect;
133
134 QStyleOptionTabWidgetFrame();
135 inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
136 : QStyleOption(Version, Type) { *this = other; }
137 QStyleOptionTabWidgetFrame &operator=(const QStyleOptionTabWidgetFrame &) = default;
138
139protected:
140 QStyleOptionTabWidgetFrame(int version);
141};
142
143#endif // QT_CONFIG(tabwidget)
144
145
146#if QT_CONFIG(tabbar)
147class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption
148{
149public:
150 enum StyleOptionType { Type = SO_TabBarBase };
151 enum StyleOptionVersion { Version = 1 };
152
153 QTabBar::Shape shape;
154 QRect tabBarRect;
155 QRect selectedTabRect;
156 bool documentMode;
157
158 QStyleOptionTabBarBase();
159 QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
160 QStyleOptionTabBarBase &operator=(const QStyleOptionTabBarBase &) = default;
161
162protected:
163 QStyleOptionTabBarBase(int version);
164};
165
166#endif // QT_CONFIG(tabbar)
167
168class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption
169{
170public:
171 enum StyleOptionType { Type = SO_Header };
172 enum StyleOptionVersion { Version = 1 };
173
174 enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
175 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
176 NextAndPreviousAreSelected };
177 enum SortIndicator { None, SortUp, SortDown };
178
179 int section;
180 QString text;
181 Qt::Alignment textAlignment;
182 QIcon icon;
183 Qt::Alignment iconAlignment;
184 SectionPosition position;
185 SelectedPosition selectedPosition;
186 SortIndicator sortIndicator;
187 Qt::Orientation orientation;
188
189 QStyleOptionHeader();
190 QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
191 QStyleOptionHeader &operator=(const QStyleOptionHeader &) = default;
192
193protected:
194 QStyleOptionHeader(int version);
195};
196
197// ### Qt7: merge with QStyleOptionHeader
198class Q_WIDGETS_EXPORT QStyleOptionHeaderV2 : public QStyleOptionHeader
199{
200public:
201 enum StyleOptionType { Type = SO_Header };
202 enum StyleOptionVersion { Version = 2 };
203
204 QStyleOptionHeaderV2();
205 QStyleOptionHeaderV2(const QStyleOptionHeaderV2 &other) : QStyleOptionHeader(Version) { *this = other; }
206 QStyleOptionHeaderV2 &operator=(const QStyleOptionHeaderV2 &) = default;
207
208 Qt::TextElideMode textElideMode:2;
209 bool isSectionDragTarget:1;
210 int unused:29;
211
212protected:
213 QStyleOptionHeaderV2(int version);
214};
215
216class Q_WIDGETS_EXPORT QStyleOptionButton : public QStyleOption
217{
218public:
219 enum StyleOptionType { Type = SO_Button };
220 enum StyleOptionVersion { Version = 1 };
221
222 enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
223 AutoDefaultButton = 0x08, CommandLinkButton = 0x10 };
224 Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
225
226 ButtonFeatures features;
227 QString text;
228 QIcon icon;
229 QSize iconSize;
230
231 QStyleOptionButton();
232 QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
233 QStyleOptionButton &operator=(const QStyleOptionButton &) = default;
234
235protected:
236 QStyleOptionButton(int version);
237};
238
239Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
240
241#if QT_CONFIG(tabbar)
242class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
243{
244public:
245 enum StyleOptionType { Type = SO_Tab };
246 enum StyleOptionVersion { Version = 1 };
247
248 enum TabPosition { Beginning, Middle, End, OnlyOneTab, Moving };
249 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
250 enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
251 RightCornerWidget = 0x02 };
252 enum TabFeature { None = 0x00, HasFrame = 0x01, MinimumSizeHint = 0x02 };
253 Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
254 Q_DECLARE_FLAGS(TabFeatures, TabFeature)
255
256 QTabBar::Shape shape;
257 QString text;
258 QIcon icon;
259 int row;
260 TabPosition position;
261 SelectedPosition selectedPosition;
262 CornerWidgets cornerWidgets;
263 QSize iconSize;
264 bool documentMode;
265 QSize leftButtonSize;
266 QSize rightButtonSize;
267 TabFeatures features;
268 int tabIndex = -1;
269
270 QStyleOptionTab();
271 QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
272 QStyleOptionTab &operator=(const QStyleOptionTab &) = default;
273
274protected:
275 QStyleOptionTab(int version);
276};
277
278Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
279
280#endif // QT_CONFIG(tabbar)
281
282
283#if QT_CONFIG(toolbar)
284
285class Q_WIDGETS_EXPORT QStyleOptionToolBar : public QStyleOption
286{
287public:
288 enum StyleOptionType { Type = SO_ToolBar };
289 enum StyleOptionVersion { Version = 1 };
290 enum ToolBarPosition { Beginning, Middle, End, OnlyOne };
291 enum ToolBarFeature { None = 0x0, Movable = 0x1 };
292 Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature)
293 ToolBarPosition positionOfLine; // The toolbar line position
294 ToolBarPosition positionWithinLine; // The position within a toolbar
295 Qt::ToolBarArea toolBarArea; // The toolbar docking area
296 ToolBarFeatures features;
297 int lineWidth;
298 int midLineWidth;
299 QStyleOptionToolBar();
300 QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; }
301 QStyleOptionToolBar &operator=(const QStyleOptionToolBar &) = default;
302
303protected:
304 QStyleOptionToolBar(int version);
305};
306
307Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
308
309#endif // QT_CONFIG(toolbar)
310
311class Q_WIDGETS_EXPORT QStyleOptionProgressBar : public QStyleOption
312{
313public:
314 enum StyleOptionType { Type = SO_ProgressBar };
315 enum StyleOptionVersion { Version = 1 };
316
317 int minimum;
318 int maximum;
319 int progress;
320 QString text;
321 Qt::Alignment textAlignment;
322 bool textVisible;
323 bool invertedAppearance;
324 bool bottomToTop;
325
326 QStyleOptionProgressBar();
327 QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
328 QStyleOptionProgressBar &operator=(const QStyleOptionProgressBar &) = default;
329
330protected:
331 QStyleOptionProgressBar(int version);
332};
333
334class Q_WIDGETS_EXPORT QStyleOptionMenuItem : public QStyleOption
335{
336public:
337 enum StyleOptionType { Type = SO_MenuItem };
338 enum StyleOptionVersion { Version = 1 };
339
340 enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff,
341#if QT_DEPRECATED_SINCE(6, 11)
342 Margin Q_DECL_ENUMERATOR_DEPRECATED_X("Not used anywhere"),
343#endif
344 EmptyArea };
345 enum CheckType { NotCheckable, Exclusive, NonExclusive };
346
347 MenuItemType menuItemType;
348 CheckType checkType;
349 bool checked;
350 bool menuHasCheckableItems;
351 QRect menuRect;
352 QString text;
353 QIcon icon;
354 int maxIconWidth;
355 int reservedShortcutWidth;
356 QFont font;
357
358 QStyleOptionMenuItem();
359 QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
360 QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default;
361
362protected:
363 QStyleOptionMenuItem(int version);
364};
365
366// ### Qt7: merge with QStyleOptionMenuItem
382
383class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
384{
385public:
386 enum StyleOptionType { Type = SO_DockWidget };
387 enum StyleOptionVersion { Version = 1 };
388
389 QString title;
390 bool closable;
391 bool movable;
392 bool floatable;
393 bool verticalTitleBar;
394
395 QStyleOptionDockWidget();
396 QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
397 QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default;
398
399protected:
400 QStyleOptionDockWidget(int version);
401};
402
403#if QT_CONFIG(itemviews)
404
405class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
406{
407public:
408 enum StyleOptionType { Type = SO_ViewItem };
409 enum StyleOptionVersion { Version = 1 };
410
411 enum Position { Left, Right, Top, Bottom };
412
413 Qt::Alignment displayAlignment;
414 Qt::Alignment decorationAlignment;
415 Qt::TextElideMode textElideMode;
416 Position decorationPosition;
417 QSize decorationSize;
418 QFont font;
419 bool showDecorationSelected;
420
421 enum ViewItemFeature {
422 None = 0x00,
423 WrapText = 0x01,
424 Alternate = 0x02,
425 HasCheckIndicator = 0x04,
426 HasDisplay = 0x08,
427 HasDecoration = 0x10,
428 IsDecoratedRootColumn = 0x20,
429 IsDecorationForRootColumn = 0x40,
430 };
431 Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
432
433 ViewItemFeatures features;
434
435 QLocale locale;
436 const QWidget *widget;
437
438 enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
439
440 QModelIndex index;
441 Qt::CheckState checkState;
442 QIcon icon;
443 QString text;
444 ViewItemPosition viewItemPosition;
445 QBrush backgroundBrush;
446
447 QStyleOptionViewItem();
448 QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
449 QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default;
450
451protected:
452 QStyleOptionViewItem(int version);
453};
454
455Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
456
457#endif // QT_CONFIG(itemviews)
458
459class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
460{
461public:
462 enum StyleOptionType { Type = SO_ToolBox };
463 enum StyleOptionVersion { Version = 1 };
464
465 QString text;
466 QIcon icon;
467
468 enum TabPosition { Beginning, Middle, End, OnlyOneTab };
469 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
470
471 TabPosition position;
472 SelectedPosition selectedPosition;
473
474 QStyleOptionToolBox();
475 QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
476 QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default;
477
478protected:
479 QStyleOptionToolBox(int version);
480};
481
482#if QT_CONFIG(rubberband)
483class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
484{
485public:
486 enum StyleOptionType { Type = SO_RubberBand };
487 enum StyleOptionVersion { Version = 1 };
488
489 QRubberBand::Shape shape;
490 bool opaque;
491
492 QStyleOptionRubberBand();
493 QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
494 QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default;
495
496protected:
497 QStyleOptionRubberBand(int version);
498};
499#endif // QT_CONFIG(rubberband)
500
501// -------------------------- Complex style options -------------------------------
502class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption
503{
504public:
505 enum StyleOptionType { Type = SO_Complex };
506 enum StyleOptionVersion { Version = 1 };
507
508 QStyle::SubControls subControls;
509 QStyle::SubControls activeSubControls;
510
511 QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
512 QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
513 QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default;
514};
515
516#if QT_CONFIG(slider)
517class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex
518{
519public:
520 enum StyleOptionType { Type = SO_Slider };
521 enum StyleOptionVersion { Version = 1 };
522
523 Qt::Orientation orientation;
524 int minimum;
525 int maximum;
526 QSlider::TickPosition tickPosition;
527 int tickInterval;
528 bool upsideDown;
529 int sliderPosition;
530 int sliderValue;
531 int singleStep;
532 int pageStep;
533 qreal notchTarget;
534 bool dialWrapping;
535 Qt::KeyboardModifiers keyboardModifiers;
536
537 QStyleOptionSlider();
538 QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
539 QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default;
540
541protected:
542 QStyleOptionSlider(int version);
543};
544#endif // QT_CONFIG(slider)
545
546#if QT_CONFIG(spinbox)
547class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
548{
549public:
550 enum StyleOptionType { Type = SO_SpinBox };
551 enum StyleOptionVersion { Version = 1 };
552
553 QAbstractSpinBox::ButtonSymbols buttonSymbols;
554 QAbstractSpinBox::StepEnabled stepEnabled;
555 bool frame;
556
557 QStyleOptionSpinBox();
558 QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
559 QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default;
560
561protected:
562 QStyleOptionSpinBox(int version);
563};
564#endif // QT_CONFIG(spinbox)
565
566#if QT_CONFIG(toolbutton)
567class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
568{
569public:
570 enum StyleOptionType { Type = SO_ToolButton };
571 enum StyleOptionVersion { Version = 1 };
572
573 enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
574 HasMenu = 0x10 };
575 Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
576
577 ToolButtonFeatures features;
578 QIcon icon;
579 QSize iconSize;
580 QString text;
581 Qt::ArrowType arrowType;
582 Qt::ToolButtonStyle toolButtonStyle;
583 QPoint pos;
584 QFont font;
585
586 QStyleOptionToolButton();
587 QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
588 QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default;
589
590protected:
591 QStyleOptionToolButton(int version);
592};
593
594Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
595#endif // QT_CONFIG(toolbutton)
596
597class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
598{
599public:
600 enum StyleOptionType { Type = SO_ComboBox };
601 enum StyleOptionVersion { Version = 1 };
602
603 bool editable;
604 QRect popupRect;
605 bool frame;
606 QString currentText;
607 QIcon currentIcon;
608 QSize iconSize;
609 Qt::Alignment textAlignment = Qt::AlignLeft | Qt::AlignVCenter;
610
611 QStyleOptionComboBox();
612 QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
613 QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default;
614
615protected:
616 QStyleOptionComboBox(int version);
617};
618
619class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
620{
621public:
622 enum StyleOptionType { Type = SO_TitleBar };
623 enum StyleOptionVersion { Version = 1 };
624
625 QString text;
626 QIcon icon;
627 int titleBarState;
628 Qt::WindowFlags titleBarFlags;
629
630 QStyleOptionTitleBar();
631 QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
632 QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default;
633
634protected:
635 QStyleOptionTitleBar(int version);
636};
637
638class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
639{
640public:
641 enum StyleOptionType { Type = SO_GroupBox };
642 enum StyleOptionVersion { Version = 1 };
643
644 QStyleOptionFrame::FrameFeatures features;
645 QString text;
646 Qt::Alignment textAlignment;
647 QColor textColor;
648 int lineWidth;
649 int midLineWidth;
650
651 QStyleOptionGroupBox();
652 QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
653 QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default;
654protected:
655 QStyleOptionGroupBox(int version);
656};
657
658class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
659{
660public:
661 enum StyleOptionType { Type = SO_SizeGrip };
662 enum StyleOptionVersion { Version = 1 };
663
664 Qt::Corner corner;
665
666 QStyleOptionSizeGrip();
667 QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
668 QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default;
669protected:
670 QStyleOptionSizeGrip(int version);
671};
672
673class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption
674{
675public:
676 enum StyleOptionType { Type = SO_GraphicsItem };
677 enum StyleOptionVersion { Version = 1 };
678
679 QRectF exposedRect;
680
681 QStyleOptionGraphicsItem();
682 QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
683 QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default;
684 static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
685protected:
686 QStyleOptionGraphicsItem(int version);
687};
688
689template <typename T>
690T qstyleoption_cast(const QStyleOption *opt)
691{
692 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
693 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
694 || int(Opt::Type) == QStyleOption::SO_Default
695 || (int(Opt::Type) == QStyleOption::SO_Complex
696 && opt->type > QStyleOption::SO_Complex)))
697 return static_cast<T>(opt);
698 return nullptr;
699}
700
701template <typename T>
702T qstyleoption_cast(QStyleOption *opt)
703{
704 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
705 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
706 || int(Opt::Type) == QStyleOption::SO_Default
707 || (int(Opt::Type) == QStyleOption::SO_Complex
708 && opt->type > QStyleOption::SO_Complex)))
709 return static_cast<T>(opt);
710 return nullptr;
711}
712
713// -------------------------- QStyleHintReturn -------------------------------
714class Q_WIDGETS_EXPORT QStyleHintReturn {
715public:
716 enum HintReturnType {
717 SH_Default=0xf000, SH_Mask, SH_Variant
718 };
719
720 enum StyleOptionType { Type = SH_Default };
721 enum StyleOptionVersion { Version = 1 };
722
723 QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
724 ~QStyleHintReturn();
725
726 int version;
727 int type;
728};
729
730class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
731public:
732 enum StyleOptionType { Type = SH_Mask };
733 enum StyleOptionVersion { Version = 1 };
734
735 QStyleHintReturnMask();
736 ~QStyleHintReturnMask();
737
738 QRegion region;
739};
740
741class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
742public:
743 enum StyleOptionType { Type = SH_Variant };
744 enum StyleOptionVersion { Version = 1 };
745
746 QStyleHintReturnVariant();
747 ~QStyleHintReturnVariant();
748
749 QVariant variant;
750};
751
752template <typename T>
753T qstyleoption_cast(const QStyleHintReturn *hint)
754{
755 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
756 if (hint && hint->version <= Opt::Version &&
757 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
758 return static_cast<T>(hint);
759 return nullptr;
760}
761
762template <typename T>
763T qstyleoption_cast(QStyleHintReturn *hint)
764{
765 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
766 if (hint && hint->version <= Opt::Version &&
767 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
768 return static_cast<T>(hint);
769 return nullptr;
770}
771
772#if !defined(QT_NO_DEBUG_STREAM)
773Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
774Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
775#endif
776
777QT_END_NAMESPACE
778
779#endif // QSTYLEOPTION_H
The QApplication class manages the GUI application's control flow and main settings.
The QPaintEngineState class provides information about the active paint engine's current state....
\inmodule QtGui
virtual QPixmap createPixmap(QSize size)
friend class QPainter
void setSystemRect(const QRect &rect)
void setActive(bool newState)
Sets the active state of the paint engine to state.
virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual QPixmap createPixmapFromImage(QImage image, Qt::ImageConversionFlags flags=Qt::AutoColor)
friend class QWidgetPrivate
QRect systemRect() const
QPaintEngine(PaintEngineFeatures features=PaintEngineFeatures())
Creates a paint engine with the featureset specified by caps.
friend class QFontEngineQPF2
friend class QMacCGContext
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
This function draws the text item textItem at position p.
virtual void drawLines(const QLineF *lines, int lineCount)
The default implementation splits the list of lines in lines into lineCount separate calls to drawPat...
PolygonDrawMode
\value OddEvenMode The polygon should be drawn using OddEven fill rule.
virtual void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the buffer points.
virtual void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount rectangles in the buffer rects.
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags=Qt::AutoColor)
Reimplement this function to draw the part of the image specified by the sr rectangle in the given re...
QPainter * painter() const
Returns the paint engine's painter.
void fix_neg_rect(int *x, int *y, int *w, int *h)
void setPaintDevice(QPaintDevice *device)
virtual QPoint coordinateOffset() const
virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
Reimplement this virtual function to draw the polygon defined by the pointCount first points in point...
void setDirty(DirtyFlags df)
void setSystemClip(const QRegion &baseClip)
QPaintEngineState * state
friend class QPainterReplayer
friend class QX11GLPlatformPixmap
PaintEngineFeatures gccaps
void clearDirty(DirtyFlags df)
bool hasFeature(PaintEngineFeatures feature) const
Returns true if the paint engine supports the specified feature; otherwise returns false.
virtual void drawEllipse(const QRectF &r)
Reimplement this function to draw the largest ellipse that can be contained within rectangle rect.
QRegion systemClip() const
bool isExtended() const
QPaintDevice * paintDevice() const
Returns the device that this engine is painting on, if painting is active; otherwise returns \nullptr...
bool testDirty(DirtyFlags df)
virtual void updateState(const QPaintEngineState &state)=0
Reimplement this function to update the state of a paint engine.
DirtyFlag
\value DirtyPen The pen is dirty and needs to be updated.
Type
\value X11 \value Windows \value MacPrinter \value CoreGraphics \macos's Quartz2D (CoreGraphics) \val...
virtual Type type() const =0
Reimplement this function to return the paint engine \l{Type}.
void drawPath(const QPainterPath &path)
Draws the given painter path using the current pen for outline and the current brush for filling.
bool begin(QPaintDevice *)
Begins painting the paint device and returns true if successful; otherwise returns false.
void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount of the given rectangles using the current pen and brush.
friend class QFontEngine
Definition qpainter.h:432
void drawLines(const QLineF *lines, int lineCount)
Draws the first lineCount lines in the array lines using the current pen.
friend class QFontEngineMac
Definition qpainter.h:435
friend class QWin32PaintEngine
Definition qpainter.h:440
friend class QWin32PaintEnginePrivate
Definition qpainter.h:441
friend class QWidget
Definition qpainter.h:431
friend class QFontEngineWin
Definition qpainter.h:436
void drawEllipse(const QRectF &r)
Draws the ellipse defined by the given rectangle.
bool end()
Ends painting.
void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the array points using the current pen's color.
bool isActive() const
Returns true if begin() has been called and end() has not yet been called; otherwise returns false.
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qpoint.h:232
The QPolygonF class provides a list of points using floating point precision.
Definition qpolygon.h:96
Q_DECLARE_FLAGS(InitFlags, InitFlag)
The QStyleHintReturnMask class provides style hints that return a QRegion.
The QStyleHintReturnVariant class provides style hints that return a QVariant.
\variable QStyleOptionGraphicsItem::exposedRect
\variable QStyleOptionHeaderV2::textElideMode
\variable QStyleOptionDockWidget::title
\variable QStyleOptionMenuItem::menuItemType
\variable QStyleOptionComplex::subControls
\variable QStyleOption::palette
\variable QStyleOptionFocusRect::backgroundColor
The QStyleOptionGraphicsItem class is used to describe the parameters needed to draw a QGraphicsItem.
\variable QStyleOptionFrame::features
The QStyleOptionHeaderV2 class is used to describe the parameters for drawing a header.
\variable QStyleOptionProgressBar::minimum
QStyleOptionMenuItemV2(const QStyleOptionMenuItemV2 &other)
Constructs a copy of the other style option.
QStyleOptionMenuItemV2()
Constructs a QStyleOptionMenuItemV2, initializing the members variables to their default values.
QStyleOptionMenuItemV2 & operator=(const QStyleOptionMenuItemV2 &)=default
Q_DECL_UNUSED_MEMBER int unused
\variable QStyleOptionMenuItemV2::mouseDown
\variable QStyleOptionToolBox::selectedPosition
\variable QStyleOptionComboBox::editable
The QStyleOption class stores the parameters used by QStyle functions.
Internal QTextItem.
\inmodule QtGui
uint is_closing
Definition qwidget.h:82
QPalette pal
Definition qwidget.h:91
uint focus_policy
Definition qwidget.h:80
uint in_show
Definition qwidget.h:83
uint unused
Definition qwidget.h:89
uint fstrut_dirty
Definition qwidget.h:85
QRect wrect
Definition qwidget.h:93
QRect crect
Definition qwidget.h:90
uint in_destructor
Definition qwidget.h:88
uint sizehint_forced
Definition qwidget.h:81
uint in_set_window_state
Definition qwidget.h:84
Qt::WindowFlags window_flags
Definition qwidget.h:78
QFont fnt
Definition qwidget.h:92
uint window_modality
Definition qwidget.h:87
uint window_state
Definition qwidget.h:79
WId winid
Definition qwidget.h:76
uint context_menu_policy
Definition qwidget.h:86
uint widget_attributes
Definition qwidget.h:77
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
QVarLengthFlatMap< QWindows11Style::Icon, QIcon, 16 > m_standardIcons
The QWindows11Style class provides a look and feel suitable for applications on Microsoft Windows 11.
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
QWindows11Style()
Constructs a QWindows11Style object.
bool eventFilter(QObject *obj, QEvent *event) override
void unpolish(QWidget *widget) override
void polish(QWidget *widget) override
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
void unpolish(QApplication *app) override
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const override
QWindows11Style(QWindows11StylePrivate &dd)
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
void polish(QPalette &pal) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget=nullptr) const override
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
void polish(QApplication *app) override
~QWindows11Style() override
Destructor.
HBITMAP buffer(int w=0, int h=0)
static int fixedPixelMetric(QStyle::PixelMetric pm)
static HDC hdcForWidgetBackingStore(const QWidget *widget)
static QBackingStore * backingStoreForWidget(const QWidget *widget)
bool swapAlphaChannel(const QRect &rect, bool allPixels=false)
bool drawBackgroundThruNativeBuffer(QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio, qreal correctionFactor)
static HWND winId(const QWidget *widget)
void init(bool force=false)
static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget)
bool drawBackgroundDirectly(HDC dc, QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio)
static bool isItemViewDelegateLineEdit(const QWidget *widget)
static bool useVista(bool update=false)
bool fixAlphaChannel(const QRect &rect)
void cleanup(bool force=false)
bool isTransparent(QWindowsThemeData &QWindowsThemeData)
bool hasAlphaChannel(const QRect &rect)
QRegion region(QWindowsThemeData &QWindowsThemeData)
bool drawBackground(QWindowsThemeData &QWindowsThemeData, qreal correctionFactor=1)
static HTHEME createTheme(int theme, const QWidget *widget)
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option=nullptr, const QWidget *widget=nullptr)
static QString themeName(int theme)
The QWindowsVistaStyle class provides a look and feel suitable for applications on Microsoft Windows ...
QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const override
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget=nullptr) const override
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void polish(QWidget *widget) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget=nullptr) const override
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
\reimp
~QWindowsVistaStyle() override
Destructor.
void polish(QPalette &pal) override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget=nullptr) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QWindowsVistaStyle(QWindowsVistaStylePrivate &dd)
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
WinFontIconEngine(const QString &glyph, const QFont &font)
QString string() const override
void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override
Uses the given painter to paint the icon with the required mode and state into the rectangle rect.
QString key() const override
\variable QIconEngine::ScaledPixmapArgument::size
QIconEngine * clone() const override
Reimplement this method to return a clone of this icon engine.
void setScale(double scale)
Combined button and popup list for selecting options.
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2582
T qstyleoption_cast(const QStyleOption *opt)
T qstyleoption_cast(QStyleOption *opt)
WINUI3Color
@ dividerStrokeDefault
@ fillControlAltSecondary
@ fillControlTertiary
@ frameColorStrongDisabled
@ textOnAccentPrimary
@ fillControlDefault
@ controlStrokeSecondary
@ frameColorStrong
@ surfaceStroke
@ fillControlDisabled
@ fillMicaAltSecondary
@ subtleHighlightColor
@ textPrimary
@ controlFillSolid
@ fillAccentSecondary
@ frameColorLight
@ subtlePressedColor
@ fillMicaAltDefault
@ textDisabled
@ fillControlSecondary
@ textSecondary
@ controlStrokeOnAccentSecondary
@ fillAccentDefault
@ textOnAccentSecondary
@ focusFrameOuterStroke
@ textOnAccentDisabled
@ fillControlAltQuarternary
@ fillControlInputActive
@ menuPanelFill
@ controlStrongFill
@ fillMicaAltTransparent
@ controlStrokePrimary
@ fillAccentDisabled
@ fillControlAltTertiary
@ fillControlAltDisabled
@ focusFrameInnerStroke
@ fillAccentTertiary
bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2)
@ UnknownAlpha
size_t qHash(const ThemeMapKey &key)
AlphaChannelType alphaType
ThemeMapKey(const QWindowsThemeData &data)
ThemeMapKey()=default