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, Margin,
341 EmptyArea };
342 enum CheckType { NotCheckable, Exclusive, NonExclusive };
343
344 MenuItemType menuItemType;
345 CheckType checkType;
346 bool checked;
347 bool menuHasCheckableItems;
348 QRect menuRect;
349 QString text;
350 QIcon icon;
351 int maxIconWidth;
352 int reservedShortcutWidth;
353 QFont font;
354
355 QStyleOptionMenuItem();
356 QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
357 QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default;
358
359protected:
360 QStyleOptionMenuItem(int version);
361};
362
363// ### Qt7: merge with QStyleOptionHeader
364class Q_WIDGETS_EXPORT QStyleOptionMenuItemV2 : public QStyleOptionMenuItem
365{
366public:
367 enum StyleOptionVersion { Version = 2 };
368
369 QStyleOptionMenuItemV2();
370 QStyleOptionMenuItemV2(const QStyleOptionMenuItemV2 &other) : QStyleOptionMenuItem(Version) { *this = other; }
371 QStyleOptionMenuItemV2 &operator=(const QStyleOptionMenuItemV2 &) = default;
372
373 bool mouseDown;
374protected:
375 QStyleOptionMenuItemV2(int version);
376};
377
378class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
379{
380public:
381 enum StyleOptionType { Type = SO_DockWidget };
382 enum StyleOptionVersion { Version = 1 };
383
384 QString title;
385 bool closable;
386 bool movable;
387 bool floatable;
388 bool verticalTitleBar;
389
390 QStyleOptionDockWidget();
391 QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
392 QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default;
393
394protected:
395 QStyleOptionDockWidget(int version);
396};
397
398#if QT_CONFIG(itemviews)
399
400class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
401{
402public:
403 enum StyleOptionType { Type = SO_ViewItem };
404 enum StyleOptionVersion { Version = 1 };
405
406 enum Position { Left, Right, Top, Bottom };
407
408 Qt::Alignment displayAlignment;
409 Qt::Alignment decorationAlignment;
410 Qt::TextElideMode textElideMode;
411 Position decorationPosition;
412 QSize decorationSize;
413 QFont font;
414 bool showDecorationSelected;
415
416 enum ViewItemFeature {
417 None = 0x00,
418 WrapText = 0x01,
419 Alternate = 0x02,
420 HasCheckIndicator = 0x04,
421 HasDisplay = 0x08,
422 HasDecoration = 0x10,
423 IsDecoratedRootColumn = 0x20,
424 IsDecorationForRootColumn = 0x40,
425 };
426 Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
427
428 ViewItemFeatures features;
429
430 QLocale locale;
431 const QWidget *widget;
432
433 enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
434
435 QModelIndex index;
436 Qt::CheckState checkState;
437 QIcon icon;
438 QString text;
439 ViewItemPosition viewItemPosition;
440 QBrush backgroundBrush;
441
442 QStyleOptionViewItem();
443 QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
444 QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default;
445
446protected:
447 QStyleOptionViewItem(int version);
448};
449
450Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
451
452#endif // QT_CONFIG(itemviews)
453
454class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
455{
456public:
457 enum StyleOptionType { Type = SO_ToolBox };
458 enum StyleOptionVersion { Version = 1 };
459
460 QString text;
461 QIcon icon;
462
463 enum TabPosition { Beginning, Middle, End, OnlyOneTab };
464 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
465
466 TabPosition position;
467 SelectedPosition selectedPosition;
468
469 QStyleOptionToolBox();
470 QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
471 QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default;
472
473protected:
474 QStyleOptionToolBox(int version);
475};
476
477#if QT_CONFIG(rubberband)
478class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
479{
480public:
481 enum StyleOptionType { Type = SO_RubberBand };
482 enum StyleOptionVersion { Version = 1 };
483
484 QRubberBand::Shape shape;
485 bool opaque;
486
487 QStyleOptionRubberBand();
488 QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
489 QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default;
490
491protected:
492 QStyleOptionRubberBand(int version);
493};
494#endif // QT_CONFIG(rubberband)
495
496// -------------------------- Complex style options -------------------------------
497class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption
498{
499public:
500 enum StyleOptionType { Type = SO_Complex };
501 enum StyleOptionVersion { Version = 1 };
502
503 QStyle::SubControls subControls;
504 QStyle::SubControls activeSubControls;
505
506 QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
507 QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
508 QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default;
509};
510
511#if QT_CONFIG(slider)
512class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex
513{
514public:
515 enum StyleOptionType { Type = SO_Slider };
516 enum StyleOptionVersion { Version = 1 };
517
518 Qt::Orientation orientation;
519 int minimum;
520 int maximum;
521 QSlider::TickPosition tickPosition;
522 int tickInterval;
523 bool upsideDown;
524 int sliderPosition;
525 int sliderValue;
526 int singleStep;
527 int pageStep;
528 qreal notchTarget;
529 bool dialWrapping;
530 Qt::KeyboardModifiers keyboardModifiers;
531
532 QStyleOptionSlider();
533 QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
534 QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default;
535
536protected:
537 QStyleOptionSlider(int version);
538};
539#endif // QT_CONFIG(slider)
540
541#if QT_CONFIG(spinbox)
542class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
543{
544public:
545 enum StyleOptionType { Type = SO_SpinBox };
546 enum StyleOptionVersion { Version = 1 };
547
548 QAbstractSpinBox::ButtonSymbols buttonSymbols;
549 QAbstractSpinBox::StepEnabled stepEnabled;
550 bool frame;
551
552 QStyleOptionSpinBox();
553 QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
554 QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default;
555
556protected:
557 QStyleOptionSpinBox(int version);
558};
559#endif // QT_CONFIG(spinbox)
560
561#if QT_CONFIG(toolbutton)
562class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
563{
564public:
565 enum StyleOptionType { Type = SO_ToolButton };
566 enum StyleOptionVersion { Version = 1 };
567
568 enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
569 HasMenu = 0x10 };
570 Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
571
572 ToolButtonFeatures features;
573 QIcon icon;
574 QSize iconSize;
575 QString text;
576 Qt::ArrowType arrowType;
577 Qt::ToolButtonStyle toolButtonStyle;
578 QPoint pos;
579 QFont font;
580
581 QStyleOptionToolButton();
582 QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
583 QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default;
584
585protected:
586 QStyleOptionToolButton(int version);
587};
588
589Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
590#endif // QT_CONFIG(toolbutton)
591
592class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
593{
594public:
595 enum StyleOptionType { Type = SO_ComboBox };
596 enum StyleOptionVersion { Version = 1 };
597
598 bool editable;
599 QRect popupRect;
600 bool frame;
601 QString currentText;
602 QIcon currentIcon;
603 QSize iconSize;
604 Qt::Alignment textAlignment = Qt::AlignLeft | Qt::AlignVCenter;
605
606 QStyleOptionComboBox();
607 QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
608 QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default;
609
610protected:
611 QStyleOptionComboBox(int version);
612};
613
614class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
615{
616public:
617 enum StyleOptionType { Type = SO_TitleBar };
618 enum StyleOptionVersion { Version = 1 };
619
620 QString text;
621 QIcon icon;
622 int titleBarState;
623 Qt::WindowFlags titleBarFlags;
624
625 QStyleOptionTitleBar();
626 QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
627 QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default;
628
629protected:
630 QStyleOptionTitleBar(int version);
631};
632
633class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
634{
635public:
636 enum StyleOptionType { Type = SO_GroupBox };
637 enum StyleOptionVersion { Version = 1 };
638
639 QStyleOptionFrame::FrameFeatures features;
640 QString text;
641 Qt::Alignment textAlignment;
642 QColor textColor;
643 int lineWidth;
644 int midLineWidth;
645
646 QStyleOptionGroupBox();
647 QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
648 QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default;
649protected:
650 QStyleOptionGroupBox(int version);
651};
652
653class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
654{
655public:
656 enum StyleOptionType { Type = SO_SizeGrip };
657 enum StyleOptionVersion { Version = 1 };
658
659 Qt::Corner corner;
660
661 QStyleOptionSizeGrip();
662 QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
663 QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default;
664protected:
665 QStyleOptionSizeGrip(int version);
666};
667
668class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption
669{
670public:
671 enum StyleOptionType { Type = SO_GraphicsItem };
672 enum StyleOptionVersion { Version = 1 };
673
674 QRectF exposedRect;
675
676 QStyleOptionGraphicsItem();
677 QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
678 QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default;
679 static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
680protected:
681 QStyleOptionGraphicsItem(int version);
682};
683
684template <typename T>
685T qstyleoption_cast(const QStyleOption *opt)
686{
687 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
688 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
689 || int(Opt::Type) == QStyleOption::SO_Default
690 || (int(Opt::Type) == QStyleOption::SO_Complex
691 && opt->type > QStyleOption::SO_Complex)))
692 return static_cast<T>(opt);
693 return nullptr;
694}
695
696template <typename T>
697T qstyleoption_cast(QStyleOption *opt)
698{
699 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
700 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
701 || int(Opt::Type) == QStyleOption::SO_Default
702 || (int(Opt::Type) == QStyleOption::SO_Complex
703 && opt->type > QStyleOption::SO_Complex)))
704 return static_cast<T>(opt);
705 return nullptr;
706}
707
708// -------------------------- QStyleHintReturn -------------------------------
709class Q_WIDGETS_EXPORT QStyleHintReturn {
710public:
711 enum HintReturnType {
712 SH_Default=0xf000, SH_Mask, SH_Variant
713 };
714
715 enum StyleOptionType { Type = SH_Default };
716 enum StyleOptionVersion { Version = 1 };
717
718 QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
719 ~QStyleHintReturn();
720
721 int version;
722 int type;
723};
724
725class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
726public:
727 enum StyleOptionType { Type = SH_Mask };
728 enum StyleOptionVersion { Version = 1 };
729
730 QStyleHintReturnMask();
731 ~QStyleHintReturnMask();
732
733 QRegion region;
734};
735
736class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
737public:
738 enum StyleOptionType { Type = SH_Variant };
739 enum StyleOptionVersion { Version = 1 };
740
741 QStyleHintReturnVariant();
742 ~QStyleHintReturnVariant();
743
744 QVariant variant;
745};
746
747template <typename T>
748T qstyleoption_cast(const QStyleHintReturn *hint)
749{
750 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
751 if (hint && hint->version <= Opt::Version &&
752 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
753 return static_cast<T>(hint);
754 return nullptr;
755}
756
757template <typename T>
758T qstyleoption_cast(QStyleHintReturn *hint)
759{
760 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
761 if (hint && hint->version <= Opt::Version &&
762 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
763 return static_cast<T>(hint);
764 return nullptr;
765}
766
767#if !defined(QT_NO_DEBUG_STREAM)
768Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
769Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
770#endif
771
772QT_END_NAMESPACE
773
774#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:231
The QPolygonF class provides a list of points using floating point precision.
Definition qpolygon.h:96
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
\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
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
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
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const override
QWindows11Style(QWindows11StylePrivate &dd)
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
~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
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.
WinFontIconEngine(const QChar &glyph, const QFont &font)
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
T qstyleoption_cast(const QStyleOption *opt)
T qstyleoption_cast(QStyleOption *opt)
WINUI3Color
@ fillControlAltSecondary
@ fillControlTertiary
@ frameColorStrongDisabled
@ textOnAccentPrimary
@ fillControlDefault
@ controlStrokeSecondary
@ frameColorStrong
@ surfaceStroke
@ fillControlDisabled
@ subtleHighlightColor
@ textPrimary
@ controlFillSolid
@ fillAccentSecondary
@ frameColorLight
@ subtlePressedColor
@ textDisabled
@ fillControlSecondary
@ textSecondary
@ controlStrokeOnAccentSecondary
@ fillAccentDefault
@ textOnAccentSecondary
@ focusFrameOuterStroke
@ textOnAccentDisabled
@ fillControlAltQuarternary
@ menuPanelFill
@ controlStrongFill
@ 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