File indexing completed on 2026-08-04 09:23:25
0001
0002
0003
0004
0005 #ifndef QSTYLEOPTION_H
0006 #define QSTYLEOPTION_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtCore/qlocale.h>
0010 #include <QtCore/qvariant.h>
0011 #if QT_CONFIG(spinbox)
0012 #include <QtWidgets/qabstractspinbox.h>
0013 #endif
0014 #include <QtGui/qicon.h>
0015 #include <QtGui/qtransform.h>
0016 #if QT_CONFIG(slider)
0017 #include <QtWidgets/qslider.h>
0018 #endif
0019 #include <QtWidgets/qstyle.h>
0020 #if QT_CONFIG(tabbar)
0021 #include <QtWidgets/qtabbar.h>
0022 #endif
0023 #if QT_CONFIG(tabwidget)
0024 #include <QtWidgets/qtabwidget.h>
0025 #endif
0026 #if QT_CONFIG(rubberband)
0027 #include <QtWidgets/qrubberband.h>
0028 #endif
0029 #include <QtWidgets/qframe.h>
0030 #if QT_CONFIG(itemviews)
0031 # include <QtCore/qabstractitemmodel.h>
0032 #endif
0033
0034 QT_BEGIN_NAMESPACE
0035
0036
0037 class QDebug;
0038
0039 class Q_WIDGETS_EXPORT QStyleOption
0040 {
0041 public:
0042 enum OptionType {
0043 SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
0044 SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header,
0045 SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame,
0046 SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
0047
0048 SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
0049 SO_TitleBar, SO_GroupBox, SO_SizeGrip,
0050
0051 SO_CustomBase = 0xf00,
0052 SO_ComplexCustomBase = 0xf000000
0053 };
0054
0055 enum StyleOptionType { Type = SO_Default };
0056 enum StyleOptionVersion { Version = 1 };
0057
0058 int version;
0059 int type;
0060 QStyle::State state;
0061 Qt::LayoutDirection direction;
0062 QRect rect;
0063 QFontMetrics fontMetrics;
0064 QPalette palette;
0065 QObject *styleObject;
0066
0067 QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
0068 QStyleOption(const QStyleOption &other);
0069 ~QStyleOption();
0070
0071 void initFrom(const QWidget *w);
0072 QStyleOption &operator=(const QStyleOption &other);
0073 };
0074
0075 class Q_WIDGETS_EXPORT QStyleOptionFocusRect : public QStyleOption
0076 {
0077 public:
0078 enum StyleOptionType { Type = SO_FocusRect };
0079 enum StyleOptionVersion { Version = 1 };
0080
0081 QColor backgroundColor;
0082
0083 QStyleOptionFocusRect();
0084 QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
0085 QStyleOptionFocusRect &operator=(const QStyleOptionFocusRect &) = default;
0086
0087 protected:
0088 QStyleOptionFocusRect(int version);
0089 };
0090
0091 class Q_WIDGETS_EXPORT QStyleOptionFrame : public QStyleOption
0092 {
0093 public:
0094 enum StyleOptionType { Type = SO_Frame };
0095 enum StyleOptionVersion { Version = 1 };
0096
0097 int lineWidth;
0098 int midLineWidth;
0099 enum FrameFeature {
0100 None = 0x00,
0101 Flat = 0x01,
0102 Rounded = 0x02
0103 };
0104 Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
0105 FrameFeatures features;
0106 QFrame::Shape frameShape;
0107
0108 QStyleOptionFrame();
0109 QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
0110 QStyleOptionFrame &operator=(const QStyleOptionFrame &) = default;
0111
0112 protected:
0113 QStyleOptionFrame(int version);
0114 };
0115
0116 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures)
0117
0118 #if QT_CONFIG(tabwidget)
0119 class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
0120 {
0121 public:
0122 enum StyleOptionType { Type = SO_TabWidgetFrame };
0123 enum StyleOptionVersion { Version = 1 };
0124
0125 int lineWidth;
0126 int midLineWidth;
0127 QTabBar::Shape shape;
0128 QSize tabBarSize;
0129 QSize rightCornerWidgetSize;
0130 QSize leftCornerWidgetSize;
0131 QRect tabBarRect;
0132 QRect selectedTabRect;
0133
0134 QStyleOptionTabWidgetFrame();
0135 inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
0136 : QStyleOption(Version, Type) { *this = other; }
0137 QStyleOptionTabWidgetFrame &operator=(const QStyleOptionTabWidgetFrame &) = default;
0138
0139 protected:
0140 QStyleOptionTabWidgetFrame(int version);
0141 };
0142
0143 #endif
0144
0145
0146 #if QT_CONFIG(tabbar)
0147 class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption
0148 {
0149 public:
0150 enum StyleOptionType { Type = SO_TabBarBase };
0151 enum StyleOptionVersion { Version = 1 };
0152
0153 QTabBar::Shape shape;
0154 QRect tabBarRect;
0155 QRect selectedTabRect;
0156 bool documentMode;
0157
0158 QStyleOptionTabBarBase();
0159 QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
0160 QStyleOptionTabBarBase &operator=(const QStyleOptionTabBarBase &) = default;
0161
0162 protected:
0163 QStyleOptionTabBarBase(int version);
0164 };
0165
0166 #endif
0167
0168 class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption
0169 {
0170 public:
0171 enum StyleOptionType { Type = SO_Header };
0172 enum StyleOptionVersion { Version = 1 };
0173
0174 enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
0175 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
0176 NextAndPreviousAreSelected };
0177 enum SortIndicator { None, SortUp, SortDown };
0178
0179 int section;
0180 QString text;
0181 Qt::Alignment textAlignment;
0182 QIcon icon;
0183 Qt::Alignment iconAlignment;
0184 SectionPosition position;
0185 SelectedPosition selectedPosition;
0186 SortIndicator sortIndicator;
0187 Qt::Orientation orientation;
0188
0189 QStyleOptionHeader();
0190 QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
0191 QStyleOptionHeader &operator=(const QStyleOptionHeader &) = default;
0192
0193 protected:
0194 QStyleOptionHeader(int version);
0195 };
0196
0197
0198 class Q_WIDGETS_EXPORT QStyleOptionHeaderV2 : public QStyleOptionHeader
0199 {
0200 public:
0201 enum StyleOptionType { Type = SO_Header };
0202 enum StyleOptionVersion { Version = 2 };
0203
0204 QStyleOptionHeaderV2();
0205 QStyleOptionHeaderV2(const QStyleOptionHeaderV2 &other) : QStyleOptionHeader(Version) { *this = other; }
0206 QStyleOptionHeaderV2 &operator=(const QStyleOptionHeaderV2 &) = default;
0207
0208 Qt::TextElideMode textElideMode:2;
0209 bool isSectionDragTarget:1;
0210 int unused:29;
0211
0212 protected:
0213 QStyleOptionHeaderV2(int version);
0214 };
0215
0216 class Q_WIDGETS_EXPORT QStyleOptionButton : public QStyleOption
0217 {
0218 public:
0219 enum StyleOptionType { Type = SO_Button };
0220 enum StyleOptionVersion { Version = 1 };
0221
0222 enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
0223 AutoDefaultButton = 0x08, CommandLinkButton = 0x10 };
0224 Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
0225
0226 ButtonFeatures features;
0227 QString text;
0228 QIcon icon;
0229 QSize iconSize;
0230
0231 QStyleOptionButton();
0232 QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
0233 QStyleOptionButton &operator=(const QStyleOptionButton &) = default;
0234
0235 protected:
0236 QStyleOptionButton(int version);
0237 };
0238
0239 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
0240
0241 #if QT_CONFIG(tabbar)
0242 class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
0243 {
0244 public:
0245 enum StyleOptionType { Type = SO_Tab };
0246 enum StyleOptionVersion { Version = 1 };
0247
0248 enum TabPosition { Beginning, Middle, End, OnlyOneTab, Moving };
0249 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
0250 enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
0251 RightCornerWidget = 0x02 };
0252 enum TabFeature { None = 0x00, HasFrame = 0x01, MinimumSizeHint = 0x02 };
0253 Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
0254 Q_DECLARE_FLAGS(TabFeatures, TabFeature)
0255
0256 QTabBar::Shape shape;
0257 QString text;
0258 QIcon icon;
0259 int row;
0260 TabPosition position;
0261 SelectedPosition selectedPosition;
0262 CornerWidgets cornerWidgets;
0263 QSize iconSize;
0264 bool documentMode;
0265 QSize leftButtonSize;
0266 QSize rightButtonSize;
0267 TabFeatures features;
0268 int tabIndex = -1;
0269
0270 QStyleOptionTab();
0271 QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
0272 QStyleOptionTab &operator=(const QStyleOptionTab &) = default;
0273
0274 protected:
0275 QStyleOptionTab(int version);
0276 };
0277
0278 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
0279
0280 #endif
0281
0282
0283 #if QT_CONFIG(toolbar)
0284
0285 class Q_WIDGETS_EXPORT QStyleOptionToolBar : public QStyleOption
0286 {
0287 public:
0288 enum StyleOptionType { Type = SO_ToolBar };
0289 enum StyleOptionVersion { Version = 1 };
0290 enum ToolBarPosition { Beginning, Middle, End, OnlyOne };
0291 enum ToolBarFeature { None = 0x0, Movable = 0x1 };
0292 Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature)
0293 ToolBarPosition positionOfLine;
0294 ToolBarPosition positionWithinLine;
0295 Qt::ToolBarArea toolBarArea;
0296 ToolBarFeatures features;
0297 int lineWidth;
0298 int midLineWidth;
0299 QStyleOptionToolBar();
0300 QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; }
0301 QStyleOptionToolBar &operator=(const QStyleOptionToolBar &) = default;
0302
0303 protected:
0304 QStyleOptionToolBar(int version);
0305 };
0306
0307 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
0308
0309 #endif
0310
0311 class Q_WIDGETS_EXPORT QStyleOptionProgressBar : public QStyleOption
0312 {
0313 public:
0314 enum StyleOptionType { Type = SO_ProgressBar };
0315 enum StyleOptionVersion { Version = 1 };
0316
0317 int minimum;
0318 int maximum;
0319 int progress;
0320 QString text;
0321 Qt::Alignment textAlignment;
0322 bool textVisible;
0323 bool invertedAppearance;
0324 bool bottomToTop;
0325
0326 QStyleOptionProgressBar();
0327 QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
0328 QStyleOptionProgressBar &operator=(const QStyleOptionProgressBar &) = default;
0329
0330 protected:
0331 QStyleOptionProgressBar(int version);
0332 };
0333
0334 class Q_WIDGETS_EXPORT QStyleOptionMenuItem : public QStyleOption
0335 {
0336 public:
0337 enum StyleOptionType { Type = SO_MenuItem };
0338 enum StyleOptionVersion { Version = 1 };
0339
0340 enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff,
0341 #if QT_DEPRECATED_SINCE(6, 11)
0342 Margin Q_DECL_ENUMERATOR_DEPRECATED_X("Not used anywhere"),
0343 #endif
0344 EmptyArea = TearOff + 2 };
0345 enum CheckType { NotCheckable, Exclusive, NonExclusive };
0346
0347 MenuItemType menuItemType;
0348 CheckType checkType;
0349 bool checked;
0350 bool menuHasCheckableItems;
0351 QRect menuRect;
0352 QString text;
0353 QIcon icon;
0354 int maxIconWidth;
0355 int reservedShortcutWidth;
0356 QFont font;
0357
0358 QStyleOptionMenuItem();
0359 QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
0360 QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default;
0361
0362 protected:
0363 QStyleOptionMenuItem(int version);
0364 };
0365
0366
0367 class QStyleOptionMenuItemV2 : public QStyleOptionMenuItem
0368 {
0369 public:
0370 enum StyleOptionVersion { Version = 2 };
0371
0372 QStyleOptionMenuItemV2() : QStyleOptionMenuItemV2(Version) {}
0373 QStyleOptionMenuItemV2(const QStyleOptionMenuItemV2 &other) : QStyleOptionMenuItem(Version) { *this = other; }
0374 QStyleOptionMenuItemV2 &operator=(const QStyleOptionMenuItemV2 &) = default;
0375
0376 bool mouseDown : 1;
0377 Q_DECL_UNUSED_MEMBER
0378 int unused : 31;
0379 protected:
0380 Q_WIDGETS_EXPORT QStyleOptionMenuItemV2(int version);
0381 };
0382
0383 class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
0384 {
0385 public:
0386 enum StyleOptionType { Type = SO_DockWidget };
0387 enum StyleOptionVersion { Version = 1 };
0388
0389 QString title;
0390 bool closable;
0391 bool movable;
0392 bool floatable;
0393 bool verticalTitleBar;
0394
0395 QStyleOptionDockWidget();
0396 QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
0397 QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default;
0398
0399 protected:
0400 QStyleOptionDockWidget(int version);
0401 };
0402
0403 #if QT_CONFIG(itemviews)
0404
0405 class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
0406 {
0407 public:
0408 enum StyleOptionType { Type = SO_ViewItem };
0409 enum StyleOptionVersion { Version = 1 };
0410
0411 enum Position { Left, Right, Top, Bottom };
0412
0413 Qt::Alignment displayAlignment;
0414 Qt::Alignment decorationAlignment;
0415 Qt::TextElideMode textElideMode;
0416 Position decorationPosition;
0417 QSize decorationSize;
0418 QFont font;
0419 bool showDecorationSelected;
0420
0421 enum ViewItemFeature {
0422 None = 0x00,
0423 WrapText = 0x01,
0424 Alternate = 0x02,
0425 HasCheckIndicator = 0x04,
0426 HasDisplay = 0x08,
0427 HasDecoration = 0x10,
0428 IsDecoratedRootColumn = 0x20,
0429 IsDecorationForRootColumn = 0x40,
0430 };
0431 Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
0432
0433 ViewItemFeatures features;
0434
0435 QLocale locale;
0436 const QWidget *widget;
0437
0438 enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
0439
0440 QModelIndex index;
0441 Qt::CheckState checkState;
0442 QIcon icon;
0443 QString text;
0444 ViewItemPosition viewItemPosition;
0445 QBrush backgroundBrush;
0446
0447 QStyleOptionViewItem();
0448 QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
0449 QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default;
0450
0451 protected:
0452 QStyleOptionViewItem(int version);
0453 };
0454
0455 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
0456
0457 #endif
0458
0459 class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
0460 {
0461 public:
0462 enum StyleOptionType { Type = SO_ToolBox };
0463 enum StyleOptionVersion { Version = 1 };
0464
0465 QString text;
0466 QIcon icon;
0467
0468 enum TabPosition { Beginning, Middle, End, OnlyOneTab };
0469 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
0470
0471 TabPosition position;
0472 SelectedPosition selectedPosition;
0473
0474 QStyleOptionToolBox();
0475 QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
0476 QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default;
0477
0478 protected:
0479 QStyleOptionToolBox(int version);
0480 };
0481
0482 #if QT_CONFIG(rubberband)
0483 class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
0484 {
0485 public:
0486 enum StyleOptionType { Type = SO_RubberBand };
0487 enum StyleOptionVersion { Version = 1 };
0488
0489 QRubberBand::Shape shape;
0490 bool opaque;
0491
0492 QStyleOptionRubberBand();
0493 QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
0494 QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default;
0495
0496 protected:
0497 QStyleOptionRubberBand(int version);
0498 };
0499 #endif
0500
0501
0502 class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption
0503 {
0504 public:
0505 enum StyleOptionType { Type = SO_Complex };
0506 enum StyleOptionVersion { Version = 1 };
0507
0508 QStyle::SubControls subControls;
0509 QStyle::SubControls activeSubControls;
0510
0511 QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
0512 QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
0513 QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default;
0514 };
0515
0516 #if QT_CONFIG(slider)
0517 class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex
0518 {
0519 public:
0520 enum StyleOptionType { Type = SO_Slider };
0521 enum StyleOptionVersion { Version = 1 };
0522
0523 Qt::Orientation orientation;
0524 int minimum;
0525 int maximum;
0526 QSlider::TickPosition tickPosition;
0527 int tickInterval;
0528 bool upsideDown;
0529 int sliderPosition;
0530 int sliderValue;
0531 int singleStep;
0532 int pageStep;
0533 qreal notchTarget;
0534 bool dialWrapping;
0535 Qt::KeyboardModifiers keyboardModifiers;
0536
0537 QStyleOptionSlider();
0538 QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0539 QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default;
0540
0541 protected:
0542 QStyleOptionSlider(int version);
0543 };
0544 #endif
0545
0546 #if QT_CONFIG(spinbox)
0547 class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
0548 {
0549 public:
0550 enum StyleOptionType { Type = SO_SpinBox };
0551 enum StyleOptionVersion { Version = 1 };
0552
0553 QAbstractSpinBox::ButtonSymbols buttonSymbols;
0554 QAbstractSpinBox::StepEnabled stepEnabled;
0555 bool frame;
0556
0557 QStyleOptionSpinBox();
0558 QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0559 QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default;
0560
0561 protected:
0562 QStyleOptionSpinBox(int version);
0563 };
0564 #endif
0565
0566 #if QT_CONFIG(toolbutton)
0567 class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
0568 {
0569 public:
0570 enum StyleOptionType { Type = SO_ToolButton };
0571 enum StyleOptionVersion { Version = 1 };
0572
0573 enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
0574 HasMenu = 0x10 };
0575 Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
0576
0577 ToolButtonFeatures features;
0578 QIcon icon;
0579 QSize iconSize;
0580 QString text;
0581 Qt::ArrowType arrowType;
0582 Qt::ToolButtonStyle toolButtonStyle;
0583 QPoint pos;
0584 QFont font;
0585
0586 QStyleOptionToolButton();
0587 QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0588 QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default;
0589
0590 protected:
0591 QStyleOptionToolButton(int version);
0592 };
0593
0594 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
0595 #endif
0596
0597 class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
0598 {
0599 public:
0600 enum StyleOptionType { Type = SO_ComboBox };
0601 enum StyleOptionVersion { Version = 1 };
0602
0603 bool editable;
0604 QRect popupRect;
0605 bool frame;
0606 QString currentText;
0607 QIcon currentIcon;
0608 QSize iconSize;
0609 Qt::Alignment textAlignment = Qt::AlignLeft | Qt::AlignVCenter;
0610
0611 QStyleOptionComboBox();
0612 QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0613 QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default;
0614
0615 protected:
0616 QStyleOptionComboBox(int version);
0617 };
0618
0619 class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
0620 {
0621 public:
0622 enum StyleOptionType { Type = SO_TitleBar };
0623 enum StyleOptionVersion { Version = 1 };
0624
0625 QString text;
0626 QIcon icon;
0627 int titleBarState;
0628 Qt::WindowFlags titleBarFlags;
0629
0630 QStyleOptionTitleBar();
0631 QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0632 QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default;
0633
0634 protected:
0635 QStyleOptionTitleBar(int version);
0636 };
0637
0638 class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
0639 {
0640 public:
0641 enum StyleOptionType { Type = SO_GroupBox };
0642 enum StyleOptionVersion { Version = 1 };
0643
0644 QStyleOptionFrame::FrameFeatures features;
0645 QString text;
0646 Qt::Alignment textAlignment;
0647 QColor textColor;
0648 int lineWidth;
0649 int midLineWidth;
0650
0651 QStyleOptionGroupBox();
0652 QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0653 QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default;
0654 protected:
0655 QStyleOptionGroupBox(int version);
0656 };
0657
0658 class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
0659 {
0660 public:
0661 enum StyleOptionType { Type = SO_SizeGrip };
0662 enum StyleOptionVersion { Version = 1 };
0663
0664 Qt::Corner corner;
0665
0666 QStyleOptionSizeGrip();
0667 QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0668 QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default;
0669 protected:
0670 QStyleOptionSizeGrip(int version);
0671 };
0672
0673 class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption
0674 {
0675 public:
0676 enum StyleOptionType { Type = SO_GraphicsItem };
0677 enum StyleOptionVersion { Version = 1 };
0678
0679 QRectF exposedRect;
0680
0681 QStyleOptionGraphicsItem();
0682 QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
0683 QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default;
0684 static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
0685 protected:
0686 QStyleOptionGraphicsItem(int version);
0687 };
0688
0689 template <typename T>
0690 T qstyleoption_cast(const QStyleOption *opt)
0691 {
0692 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0693 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
0694 || int(Opt::Type) == QStyleOption::SO_Default
0695 || (int(Opt::Type) == QStyleOption::SO_Complex
0696 && opt->type > QStyleOption::SO_Complex)))
0697 return static_cast<T>(opt);
0698 return nullptr;
0699 }
0700
0701 template <typename T>
0702 T qstyleoption_cast(QStyleOption *opt)
0703 {
0704 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0705 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
0706 || int(Opt::Type) == QStyleOption::SO_Default
0707 || (int(Opt::Type) == QStyleOption::SO_Complex
0708 && opt->type > QStyleOption::SO_Complex)))
0709 return static_cast<T>(opt);
0710 return nullptr;
0711 }
0712
0713
0714 class Q_WIDGETS_EXPORT QStyleHintReturn {
0715 public:
0716 enum HintReturnType {
0717 SH_Default=0xf000, SH_Mask, SH_Variant
0718 };
0719
0720 enum StyleOptionType { Type = SH_Default };
0721 enum StyleOptionVersion { Version = 1 };
0722
0723 QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
0724 ~QStyleHintReturn();
0725
0726 int version;
0727 int type;
0728 };
0729
0730 class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
0731 public:
0732 enum StyleOptionType { Type = SH_Mask };
0733 enum StyleOptionVersion { Version = 1 };
0734
0735 QStyleHintReturnMask();
0736 ~QStyleHintReturnMask();
0737
0738 QRegion region;
0739 };
0740
0741 class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
0742 public:
0743 enum StyleOptionType { Type = SH_Variant };
0744 enum StyleOptionVersion { Version = 1 };
0745
0746 QStyleHintReturnVariant();
0747 ~QStyleHintReturnVariant();
0748
0749 QVariant variant;
0750 };
0751
0752 template <typename T>
0753 T qstyleoption_cast(const QStyleHintReturn *hint)
0754 {
0755 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0756 if (hint && hint->version <= Opt::Version &&
0757 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
0758 return static_cast<T>(hint);
0759 return nullptr;
0760 }
0761
0762 template <typename T>
0763 T qstyleoption_cast(QStyleHintReturn *hint)
0764 {
0765 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0766 if (hint && hint->version <= Opt::Version &&
0767 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
0768 return static_cast<T>(hint);
0769 return nullptr;
0770 }
0771
0772 #if !defined(QT_NO_DEBUG_STREAM)
0773 Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
0774 Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
0775 #endif
0776
0777 QT_END_NAMESPACE
0778
0779 #endif