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
4#ifndef QSTYLEOPTION_H
5#define QSTYLEOPTION_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtCore/qlocale.h>
9#include <QtCore/qvariant.h>
10#if QT_CONFIG(spinbox)
11#include <QtWidgets/qabstractspinbox.h>
12#endif
13#include <QtGui/qicon.h>
14#include <QtGui/qtransform.h>
15#if QT_CONFIG(slider)
16#include <QtWidgets/qslider.h>
17#endif
18#include <QtWidgets/qstyle.h>
19#if QT_CONFIG(tabbar)
20#include <QtWidgets/qtabbar.h>
21#endif
22#if QT_CONFIG(tabwidget)
23#include <QtWidgets/qtabwidget.h>
24#endif
25#if QT_CONFIG(rubberband)
26#include <QtWidgets/qrubberband.h>
27#endif
28#include <QtWidgets/qframe.h>
29#if QT_CONFIG(itemviews)
30# include <QtCore/qabstractitemmodel.h>
31#endif
32
33QT_BEGIN_NAMESPACE
34
35
36class QDebug;
37
38class Q_WIDGETS_EXPORT QStyleOption
39{
40public:
41 enum OptionType {
42 SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
43 SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header,
44 SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame,
45 SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
46
47 SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
48 SO_TitleBar, SO_GroupBox, SO_SizeGrip,
49
50 SO_CustomBase = 0xf00,
51 SO_ComplexCustomBase = 0xf000000
52 };
53
54 enum StyleOptionType { Type = SO_Default };
55 enum StyleOptionVersion { Version = 1 };
56
57 int version;
58 int type;
59 QStyle::State state;
60 Qt::LayoutDirection direction;
61 QRect rect;
62 QFontMetrics fontMetrics;
63 QPalette palette;
64 QObject *styleObject;
65
66 QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
67 QStyleOption(const QStyleOption &other);
68 ~QStyleOption();
69
70 void initFrom(const QWidget *w);
71 QStyleOption &operator=(const QStyleOption &other);
72};
73
74class Q_WIDGETS_EXPORT QStyleOptionFocusRect : public QStyleOption
75{
76public:
77 enum StyleOptionType { Type = SO_FocusRect };
78 enum StyleOptionVersion { Version = 1 };
79
80 QColor backgroundColor;
81
82 QStyleOptionFocusRect();
83 QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
84 QStyleOptionFocusRect &operator=(const QStyleOptionFocusRect &) = default;
85
86protected:
87 QStyleOptionFocusRect(int version);
88};
89
90class Q_WIDGETS_EXPORT QStyleOptionFrame : public QStyleOption
91{
92public:
93 enum StyleOptionType { Type = SO_Frame };
94 enum StyleOptionVersion { Version = 1 };
95
96 int lineWidth;
97 int midLineWidth;
98 enum FrameFeature {
99 None = 0x00,
100 Flat = 0x01,
101 Rounded = 0x02
102 };
103 Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
104 FrameFeatures features;
105 QFrame::Shape frameShape;
106
107 QStyleOptionFrame();
108 QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
109 QStyleOptionFrame &operator=(const QStyleOptionFrame &) = default;
110
111protected:
112 QStyleOptionFrame(int version);
113};
114
115Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures)
116
117#if QT_CONFIG(tabwidget)
118class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
119{
120public:
121 enum StyleOptionType { Type = SO_TabWidgetFrame };
122 enum StyleOptionVersion { Version = 1 };
123
124 int lineWidth;
125 int midLineWidth;
126 QTabBar::Shape shape;
127 QSize tabBarSize;
128 QSize rightCornerWidgetSize;
129 QSize leftCornerWidgetSize;
130 QRect tabBarRect;
131 QRect selectedTabRect;
132
133 QStyleOptionTabWidgetFrame();
134 inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
135 : QStyleOption(Version, Type) { *this = other; }
136 QStyleOptionTabWidgetFrame &operator=(const QStyleOptionTabWidgetFrame &) = default;
137
138protected:
139 QStyleOptionTabWidgetFrame(int version);
140};
141
142#endif // QT_CONFIG(tabwidget)
143
144
145#if QT_CONFIG(tabbar)
146class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption
147{
148public:
149 enum StyleOptionType { Type = SO_TabBarBase };
150 enum StyleOptionVersion { Version = 1 };
151
152 QTabBar::Shape shape;
153 QRect tabBarRect;
154 QRect selectedTabRect;
155 bool documentMode;
156
157 QStyleOptionTabBarBase();
158 QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
159 QStyleOptionTabBarBase &operator=(const QStyleOptionTabBarBase &) = default;
160
161protected:
162 QStyleOptionTabBarBase(int version);
163};
164
165#endif // QT_CONFIG(tabbar)
166
167class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption
168{
169public:
170 enum StyleOptionType { Type = SO_Header };
171 enum StyleOptionVersion { Version = 1 };
172
173 enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
174 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
175 NextAndPreviousAreSelected };
176 enum SortIndicator { None, SortUp, SortDown };
177
178 int section;
179 QString text;
180 Qt::Alignment textAlignment;
181 QIcon icon;
182 Qt::Alignment iconAlignment;
183 SectionPosition position;
184 SelectedPosition selectedPosition;
185 SortIndicator sortIndicator;
186 Qt::Orientation orientation;
187
188 QStyleOptionHeader();
189 QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
190 QStyleOptionHeader &operator=(const QStyleOptionHeader &) = default;
191
192protected:
193 QStyleOptionHeader(int version);
194};
195
196// ### Qt7: merge with QStyleOptionHeader
197class Q_WIDGETS_EXPORT QStyleOptionHeaderV2 : public QStyleOptionHeader
198{
199public:
200 enum StyleOptionType { Type = SO_Header };
201 enum StyleOptionVersion { Version = 2 };
202
203 QStyleOptionHeaderV2();
204 QStyleOptionHeaderV2(const QStyleOptionHeaderV2 &other) : QStyleOptionHeader(Version) { *this = other; }
205 QStyleOptionHeaderV2 &operator=(const QStyleOptionHeaderV2 &) = default;
206
207 Qt::TextElideMode textElideMode:2;
208 bool isSectionDragTarget:1;
209 int unused:29;
210
211protected:
212 QStyleOptionHeaderV2(int version);
213};
214
215class Q_WIDGETS_EXPORT QStyleOptionButton : public QStyleOption
216{
217public:
218 enum StyleOptionType { Type = SO_Button };
219 enum StyleOptionVersion { Version = 1 };
220
221 enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
222 AutoDefaultButton = 0x08, CommandLinkButton = 0x10 };
223 Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
224
225 ButtonFeatures features;
226 QString text;
227 QIcon icon;
228 QSize iconSize;
229
230 QStyleOptionButton();
231 QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
232 QStyleOptionButton &operator=(const QStyleOptionButton &) = default;
233
234protected:
235 QStyleOptionButton(int version);
236};
237
238Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
239
240#if QT_CONFIG(tabbar)
241class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
242{
243public:
244 enum StyleOptionType { Type = SO_Tab };
245 enum StyleOptionVersion { Version = 1 };
246
247 enum TabPosition { Beginning, Middle, End, OnlyOneTab, Moving };
248 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
249 enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
250 RightCornerWidget = 0x02 };
251 enum TabFeature { None = 0x00, HasFrame = 0x01, MinimumSizeHint = 0x02 };
252 Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
253 Q_DECLARE_FLAGS(TabFeatures, TabFeature)
254
255 QTabBar::Shape shape;
256 QString text;
257 QIcon icon;
258 int row;
259 TabPosition position;
260 SelectedPosition selectedPosition;
261 CornerWidgets cornerWidgets;
262 QSize iconSize;
263 bool documentMode;
264 QSize leftButtonSize;
265 QSize rightButtonSize;
266 TabFeatures features;
267 int tabIndex = -1;
268
269 QStyleOptionTab();
270 QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
271 QStyleOptionTab &operator=(const QStyleOptionTab &) = default;
272
273protected:
274 QStyleOptionTab(int version);
275};
276
277Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
278
279#endif // QT_CONFIG(tabbar)
280
281
282#if QT_CONFIG(toolbar)
283
284class Q_WIDGETS_EXPORT QStyleOptionToolBar : public QStyleOption
285{
286public:
287 enum StyleOptionType { Type = SO_ToolBar };
288 enum StyleOptionVersion { Version = 1 };
289 enum ToolBarPosition { Beginning, Middle, End, OnlyOne };
290 enum ToolBarFeature { None = 0x0, Movable = 0x1 };
291 Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature)
292 ToolBarPosition positionOfLine; // The toolbar line position
293 ToolBarPosition positionWithinLine; // The position within a toolbar
294 Qt::ToolBarArea toolBarArea; // The toolbar docking area
295 ToolBarFeatures features;
296 int lineWidth;
297 int midLineWidth;
298 QStyleOptionToolBar();
299 QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; }
300 QStyleOptionToolBar &operator=(const QStyleOptionToolBar &) = default;
301
302protected:
303 QStyleOptionToolBar(int version);
304};
305
306Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
307
308#endif // QT_CONFIG(toolbar)
309
310class Q_WIDGETS_EXPORT QStyleOptionProgressBar : public QStyleOption
311{
312public:
313 enum StyleOptionType { Type = SO_ProgressBar };
314 enum StyleOptionVersion { Version = 1 };
315
316 int minimum;
317 int maximum;
318 int progress;
319 QString text;
320 Qt::Alignment textAlignment;
321 bool textVisible;
322 bool invertedAppearance;
323 bool bottomToTop;
324
325 QStyleOptionProgressBar();
326 QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
327 QStyleOptionProgressBar &operator=(const QStyleOptionProgressBar &) = default;
328
329protected:
330 QStyleOptionProgressBar(int version);
331};
332
333class Q_WIDGETS_EXPORT QStyleOptionMenuItem : public QStyleOption
334{
335public:
336 enum StyleOptionType { Type = SO_MenuItem };
337 enum StyleOptionVersion { Version = 1 };
338
339 enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin,
340 EmptyArea };
341 enum CheckType { NotCheckable, Exclusive, NonExclusive };
342
343 MenuItemType menuItemType;
344 CheckType checkType;
345 bool checked;
346 bool menuHasCheckableItems;
347 QRect menuRect;
348 QString text;
349 QIcon icon;
350 int maxIconWidth;
351 int reservedShortcutWidth;
352 QFont font;
353
354 QStyleOptionMenuItem();
355 QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
356 QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default;
357
358protected:
359 QStyleOptionMenuItem(int version);
360};
361
362class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
363{
364public:
365 enum StyleOptionType { Type = SO_DockWidget };
366 enum StyleOptionVersion { Version = 1 };
367
368 QString title;
369 bool closable;
370 bool movable;
371 bool floatable;
372 bool verticalTitleBar;
373
374 QStyleOptionDockWidget();
375 QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
376 QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default;
377
378protected:
379 QStyleOptionDockWidget(int version);
380};
381
382#if QT_CONFIG(itemviews)
383
384class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
385{
386public:
387 enum StyleOptionType { Type = SO_ViewItem };
388 enum StyleOptionVersion { Version = 1 };
389
390 enum Position { Left, Right, Top, Bottom };
391
392 Qt::Alignment displayAlignment;
393 Qt::Alignment decorationAlignment;
394 Qt::TextElideMode textElideMode;
395 Position decorationPosition;
396 QSize decorationSize;
397 QFont font;
398 bool showDecorationSelected;
399
400 enum ViewItemFeature {
401 None = 0x00,
402 WrapText = 0x01,
403 Alternate = 0x02,
404 HasCheckIndicator = 0x04,
405 HasDisplay = 0x08,
406 HasDecoration = 0x10,
407 IsDecoratedRootColumn = 0x20,
408 IsDecorationForRootColumn = 0x40,
409 };
410 Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
411
412 ViewItemFeatures features;
413
414 QLocale locale;
415 const QWidget *widget;
416
417 enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
418
419 QModelIndex index;
420 Qt::CheckState checkState;
421 QIcon icon;
422 QString text;
423 ViewItemPosition viewItemPosition;
424 QBrush backgroundBrush;
425
426 QStyleOptionViewItem();
427 QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
428 QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default;
429
430protected:
431 QStyleOptionViewItem(int version);
432};
433
434Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
435
436#endif // QT_CONFIG(itemviews)
437
438class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
439{
440public:
441 enum StyleOptionType { Type = SO_ToolBox };
442 enum StyleOptionVersion { Version = 1 };
443
444 QString text;
445 QIcon icon;
446
447 enum TabPosition { Beginning, Middle, End, OnlyOneTab };
448 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
449
450 TabPosition position;
451 SelectedPosition selectedPosition;
452
453 QStyleOptionToolBox();
454 QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
455 QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default;
456
457protected:
458 QStyleOptionToolBox(int version);
459};
460
461#if QT_CONFIG(rubberband)
462class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
463{
464public:
465 enum StyleOptionType { Type = SO_RubberBand };
466 enum StyleOptionVersion { Version = 1 };
467
468 QRubberBand::Shape shape;
469 bool opaque;
470
471 QStyleOptionRubberBand();
472 QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
473 QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default;
474
475protected:
476 QStyleOptionRubberBand(int version);
477};
478#endif // QT_CONFIG(rubberband)
479
480// -------------------------- Complex style options -------------------------------
481class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption
482{
483public:
484 enum StyleOptionType { Type = SO_Complex };
485 enum StyleOptionVersion { Version = 1 };
486
487 QStyle::SubControls subControls;
488 QStyle::SubControls activeSubControls;
489
490 QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
491 QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
492 QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default;
493};
494
495#if QT_CONFIG(slider)
496class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex
497{
498public:
499 enum StyleOptionType { Type = SO_Slider };
500 enum StyleOptionVersion { Version = 1 };
501
502 Qt::Orientation orientation;
503 int minimum;
504 int maximum;
505 QSlider::TickPosition tickPosition;
506 int tickInterval;
507 bool upsideDown;
508 int sliderPosition;
509 int sliderValue;
510 int singleStep;
511 int pageStep;
512 qreal notchTarget;
513 bool dialWrapping;
514 Qt::KeyboardModifiers keyboardModifiers;
515
516 QStyleOptionSlider();
517 QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
518 QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default;
519
520protected:
521 QStyleOptionSlider(int version);
522};
523#endif // QT_CONFIG(slider)
524
525#if QT_CONFIG(spinbox)
526class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
527{
528public:
529 enum StyleOptionType { Type = SO_SpinBox };
530 enum StyleOptionVersion { Version = 1 };
531
532 QAbstractSpinBox::ButtonSymbols buttonSymbols;
533 QAbstractSpinBox::StepEnabled stepEnabled;
534 bool frame;
535
536 QStyleOptionSpinBox();
537 QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
538 QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default;
539
540protected:
541 QStyleOptionSpinBox(int version);
542};
543#endif // QT_CONFIG(spinbox)
544
545class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
546{
547public:
548 enum StyleOptionType { Type = SO_ToolButton };
549 enum StyleOptionVersion { Version = 1 };
550
551 enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
552 HasMenu = 0x10 };
553 Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
554
555 ToolButtonFeatures features;
556 QIcon icon;
557 QSize iconSize;
558 QString text;
559 Qt::ArrowType arrowType;
560 Qt::ToolButtonStyle toolButtonStyle;
561 QPoint pos;
562 QFont font;
563
564 QStyleOptionToolButton();
565 QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
566 QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default;
567
568protected:
569 QStyleOptionToolButton(int version);
570};
571
572Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
573
574class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
575{
576public:
577 enum StyleOptionType { Type = SO_ComboBox };
578 enum StyleOptionVersion { Version = 1 };
579
580 bool editable;
581 QRect popupRect;
582 bool frame;
583 QString currentText;
584 QIcon currentIcon;
585 QSize iconSize;
586 Qt::Alignment textAlignment = Qt::AlignLeft | Qt::AlignVCenter;
587
588 QStyleOptionComboBox();
589 QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
590 QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default;
591
592protected:
593 QStyleOptionComboBox(int version);
594};
595
596class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
597{
598public:
599 enum StyleOptionType { Type = SO_TitleBar };
600 enum StyleOptionVersion { Version = 1 };
601
602 QString text;
603 QIcon icon;
604 int titleBarState;
605 Qt::WindowFlags titleBarFlags;
606
607 QStyleOptionTitleBar();
608 QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
609 QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default;
610
611protected:
612 QStyleOptionTitleBar(int version);
613};
614
615class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
616{
617public:
618 enum StyleOptionType { Type = SO_GroupBox };
619 enum StyleOptionVersion { Version = 1 };
620
621 QStyleOptionFrame::FrameFeatures features;
622 QString text;
623 Qt::Alignment textAlignment;
624 QColor textColor;
625 int lineWidth;
626 int midLineWidth;
627
628 QStyleOptionGroupBox();
629 QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
630 QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default;
631protected:
632 QStyleOptionGroupBox(int version);
633};
634
635class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
636{
637public:
638 enum StyleOptionType { Type = SO_SizeGrip };
639 enum StyleOptionVersion { Version = 1 };
640
641 Qt::Corner corner;
642
643 QStyleOptionSizeGrip();
644 QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
645 QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default;
646protected:
647 QStyleOptionSizeGrip(int version);
648};
649
650class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption
651{
652public:
653 enum StyleOptionType { Type = SO_GraphicsItem };
654 enum StyleOptionVersion { Version = 1 };
655
656 QRectF exposedRect;
657
658 QStyleOptionGraphicsItem();
659 QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
660 QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default;
661 static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
662protected:
663 QStyleOptionGraphicsItem(int version);
664};
665
666template <typename T>
667T qstyleoption_cast(const QStyleOption *opt)
668{
669 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
670 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
671 || int(Opt::Type) == QStyleOption::SO_Default
672 || (int(Opt::Type) == QStyleOption::SO_Complex
673 && opt->type > QStyleOption::SO_Complex)))
674 return static_cast<T>(opt);
675 return nullptr;
676}
677
678template <typename T>
679T qstyleoption_cast(QStyleOption *opt)
680{
681 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
682 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
683 || int(Opt::Type) == QStyleOption::SO_Default
684 || (int(Opt::Type) == QStyleOption::SO_Complex
685 && opt->type > QStyleOption::SO_Complex)))
686 return static_cast<T>(opt);
687 return nullptr;
688}
689
690// -------------------------- QStyleHintReturn -------------------------------
691class Q_WIDGETS_EXPORT QStyleHintReturn {
692public:
693 enum HintReturnType {
694 SH_Default=0xf000, SH_Mask, SH_Variant
695 };
696
697 enum StyleOptionType { Type = SH_Default };
698 enum StyleOptionVersion { Version = 1 };
699
700 QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
701 ~QStyleHintReturn();
702
703 int version;
704 int type;
705};
706
707class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
708public:
709 enum StyleOptionType { Type = SH_Mask };
710 enum StyleOptionVersion { Version = 1 };
711
712 QStyleHintReturnMask();
713 ~QStyleHintReturnMask();
714
715 QRegion region;
716};
717
718class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
719public:
720 enum StyleOptionType { Type = SH_Variant };
721 enum StyleOptionVersion { Version = 1 };
722
723 QStyleHintReturnVariant();
724 ~QStyleHintReturnVariant();
725
726 QVariant variant;
727};
728
729template <typename T>
730T qstyleoption_cast(const QStyleHintReturn *hint)
731{
732 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
733 if (hint && hint->version <= Opt::Version &&
734 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
735 return static_cast<T>(hint);
736 return nullptr;
737}
738
739template <typename T>
740T qstyleoption_cast(QStyleHintReturn *hint)
741{
742 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
743 if (hint && hint->version <= Opt::Version &&
744 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
745 return static_cast<T>(hint);
746 return nullptr;
747}
748
749#if !defined(QT_NO_DEBUG_STREAM)
750Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
751Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
752#endif
753
754QT_END_NAMESPACE
755
756#endif // QSTYLEOPTION_H
The QApplication class manages the GUI application's control flow and main settings.
QScopedPointer< QImageIOHandlerPrivate > d_ptr
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.
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:427
friend class QWin32PaintEngine
Definition qpainter.h:432
friend class QWin32PaintEnginePrivate
Definition qpainter.h:433
friend class QWidget
Definition qpainter.h:423
friend class QFontEngineWin
Definition qpainter.h:428
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:229
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 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 QStyleOptionToolBox::selectedPosition
\variable QStyleOptionComboBox::editable
\variable QStyleOptionDockWidget::title
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.
HRGN mask(QWidget *widget)
QWindowsThemeData(const QWidget *w=nullptr, QPainter *p=nullptr, int themeIn=-1, int part=0, int state=0, const QRect &r=QRect())
QMarginsF margins(const QRect &rect, int propId=TMT_CONTENTMARGINS)
const QWidget * widget
static RECT toRECT(const QRect &qr)
QMarginsF margins(int propId=TMT_CONTENTMARGINS)
static QSizeF themeSize(const QWidget *w=nullptr, QPainter *p=nullptr, int themeIn=-1, int part=0, int state=0)
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
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:2462
T qstyleoption_cast(const QStyleOption *opt)
T qstyleoption_cast(QStyleOption *opt)
bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2)
@ UnknownAlpha
size_t qHash(const ThemeMapKey &key)
AlphaChannelType alphaType
ThemeMapKey(const QWindowsThemeData &data)
ThemeMapKey()=default