File indexing completed on 2026-05-06 08:51:00
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, Margin,
0341 EmptyArea };
0342 enum CheckType { NotCheckable, Exclusive, NonExclusive };
0343
0344 MenuItemType menuItemType;
0345 CheckType checkType;
0346 bool checked;
0347 bool menuHasCheckableItems;
0348 QRect menuRect;
0349 QString text;
0350 QIcon icon;
0351 int maxIconWidth;
0352 int reservedShortcutWidth;
0353 QFont font;
0354
0355 QStyleOptionMenuItem();
0356 QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
0357 QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default;
0358
0359 protected:
0360 QStyleOptionMenuItem(int version);
0361 };
0362
0363 class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
0364 {
0365 public:
0366 enum StyleOptionType { Type = SO_DockWidget };
0367 enum StyleOptionVersion { Version = 1 };
0368
0369 QString title;
0370 bool closable;
0371 bool movable;
0372 bool floatable;
0373 bool verticalTitleBar;
0374
0375 QStyleOptionDockWidget();
0376 QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
0377 QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default;
0378
0379 protected:
0380 QStyleOptionDockWidget(int version);
0381 };
0382
0383 #if QT_CONFIG(itemviews)
0384
0385 class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
0386 {
0387 public:
0388 enum StyleOptionType { Type = SO_ViewItem };
0389 enum StyleOptionVersion { Version = 1 };
0390
0391 enum Position { Left, Right, Top, Bottom };
0392
0393 Qt::Alignment displayAlignment;
0394 Qt::Alignment decorationAlignment;
0395 Qt::TextElideMode textElideMode;
0396 Position decorationPosition;
0397 QSize decorationSize;
0398 QFont font;
0399 bool showDecorationSelected;
0400
0401 enum ViewItemFeature {
0402 None = 0x00,
0403 WrapText = 0x01,
0404 Alternate = 0x02,
0405 HasCheckIndicator = 0x04,
0406 HasDisplay = 0x08,
0407 HasDecoration = 0x10,
0408 IsDecoratedRootColumn = 0x20,
0409 IsDecorationForRootColumn = 0x40,
0410 };
0411 Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
0412
0413 ViewItemFeatures features;
0414
0415 QLocale locale;
0416 const QWidget *widget;
0417
0418 enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
0419
0420 QModelIndex index;
0421 Qt::CheckState checkState;
0422 QIcon icon;
0423 QString text;
0424 ViewItemPosition viewItemPosition;
0425 QBrush backgroundBrush;
0426
0427 QStyleOptionViewItem();
0428 QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
0429 QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default;
0430
0431 protected:
0432 QStyleOptionViewItem(int version);
0433 };
0434
0435 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
0436
0437 #endif
0438
0439 class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
0440 {
0441 public:
0442 enum StyleOptionType { Type = SO_ToolBox };
0443 enum StyleOptionVersion { Version = 1 };
0444
0445 QString text;
0446 QIcon icon;
0447
0448 enum TabPosition { Beginning, Middle, End, OnlyOneTab };
0449 enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
0450
0451 TabPosition position;
0452 SelectedPosition selectedPosition;
0453
0454 QStyleOptionToolBox();
0455 QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
0456 QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default;
0457
0458 protected:
0459 QStyleOptionToolBox(int version);
0460 };
0461
0462 #if QT_CONFIG(rubberband)
0463 class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
0464 {
0465 public:
0466 enum StyleOptionType { Type = SO_RubberBand };
0467 enum StyleOptionVersion { Version = 1 };
0468
0469 QRubberBand::Shape shape;
0470 bool opaque;
0471
0472 QStyleOptionRubberBand();
0473 QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
0474 QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default;
0475
0476 protected:
0477 QStyleOptionRubberBand(int version);
0478 };
0479 #endif
0480
0481
0482 class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption
0483 {
0484 public:
0485 enum StyleOptionType { Type = SO_Complex };
0486 enum StyleOptionVersion { Version = 1 };
0487
0488 QStyle::SubControls subControls;
0489 QStyle::SubControls activeSubControls;
0490
0491 QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
0492 QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
0493 QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default;
0494 };
0495
0496 #if QT_CONFIG(slider)
0497 class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex
0498 {
0499 public:
0500 enum StyleOptionType { Type = SO_Slider };
0501 enum StyleOptionVersion { Version = 1 };
0502
0503 Qt::Orientation orientation;
0504 int minimum;
0505 int maximum;
0506 QSlider::TickPosition tickPosition;
0507 int tickInterval;
0508 bool upsideDown;
0509 int sliderPosition;
0510 int sliderValue;
0511 int singleStep;
0512 int pageStep;
0513 qreal notchTarget;
0514 bool dialWrapping;
0515 Qt::KeyboardModifiers keyboardModifiers;
0516
0517 QStyleOptionSlider();
0518 QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0519 QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default;
0520
0521 protected:
0522 QStyleOptionSlider(int version);
0523 };
0524 #endif
0525
0526 #if QT_CONFIG(spinbox)
0527 class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
0528 {
0529 public:
0530 enum StyleOptionType { Type = SO_SpinBox };
0531 enum StyleOptionVersion { Version = 1 };
0532
0533 QAbstractSpinBox::ButtonSymbols buttonSymbols;
0534 QAbstractSpinBox::StepEnabled stepEnabled;
0535 bool frame;
0536
0537 QStyleOptionSpinBox();
0538 QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0539 QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default;
0540
0541 protected:
0542 QStyleOptionSpinBox(int version);
0543 };
0544 #endif
0545
0546 #if QT_CONFIG(toolbutton)
0547 class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
0548 {
0549 public:
0550 enum StyleOptionType { Type = SO_ToolButton };
0551 enum StyleOptionVersion { Version = 1 };
0552
0553 enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
0554 HasMenu = 0x10 };
0555 Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
0556
0557 ToolButtonFeatures features;
0558 QIcon icon;
0559 QSize iconSize;
0560 QString text;
0561 Qt::ArrowType arrowType;
0562 Qt::ToolButtonStyle toolButtonStyle;
0563 QPoint pos;
0564 QFont font;
0565
0566 QStyleOptionToolButton();
0567 QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0568 QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default;
0569
0570 protected:
0571 QStyleOptionToolButton(int version);
0572 };
0573
0574 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
0575 #endif
0576
0577 class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
0578 {
0579 public:
0580 enum StyleOptionType { Type = SO_ComboBox };
0581 enum StyleOptionVersion { Version = 1 };
0582
0583 bool editable;
0584 QRect popupRect;
0585 bool frame;
0586 QString currentText;
0587 QIcon currentIcon;
0588 QSize iconSize;
0589 Qt::Alignment textAlignment = Qt::AlignLeft | Qt::AlignVCenter;
0590
0591 QStyleOptionComboBox();
0592 QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0593 QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default;
0594
0595 protected:
0596 QStyleOptionComboBox(int version);
0597 };
0598
0599 class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
0600 {
0601 public:
0602 enum StyleOptionType { Type = SO_TitleBar };
0603 enum StyleOptionVersion { Version = 1 };
0604
0605 QString text;
0606 QIcon icon;
0607 int titleBarState;
0608 Qt::WindowFlags titleBarFlags;
0609
0610 QStyleOptionTitleBar();
0611 QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0612 QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default;
0613
0614 protected:
0615 QStyleOptionTitleBar(int version);
0616 };
0617
0618 class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
0619 {
0620 public:
0621 enum StyleOptionType { Type = SO_GroupBox };
0622 enum StyleOptionVersion { Version = 1 };
0623
0624 QStyleOptionFrame::FrameFeatures features;
0625 QString text;
0626 Qt::Alignment textAlignment;
0627 QColor textColor;
0628 int lineWidth;
0629 int midLineWidth;
0630
0631 QStyleOptionGroupBox();
0632 QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0633 QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default;
0634 protected:
0635 QStyleOptionGroupBox(int version);
0636 };
0637
0638 class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
0639 {
0640 public:
0641 enum StyleOptionType { Type = SO_SizeGrip };
0642 enum StyleOptionVersion { Version = 1 };
0643
0644 Qt::Corner corner;
0645
0646 QStyleOptionSizeGrip();
0647 QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
0648 QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default;
0649 protected:
0650 QStyleOptionSizeGrip(int version);
0651 };
0652
0653 class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption
0654 {
0655 public:
0656 enum StyleOptionType { Type = SO_GraphicsItem };
0657 enum StyleOptionVersion { Version = 1 };
0658
0659 QRectF exposedRect;
0660
0661 QStyleOptionGraphicsItem();
0662 QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
0663 QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default;
0664 static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
0665 protected:
0666 QStyleOptionGraphicsItem(int version);
0667 };
0668
0669 template <typename T>
0670 T qstyleoption_cast(const QStyleOption *opt)
0671 {
0672 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0673 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
0674 || int(Opt::Type) == QStyleOption::SO_Default
0675 || (int(Opt::Type) == QStyleOption::SO_Complex
0676 && opt->type > QStyleOption::SO_Complex)))
0677 return static_cast<T>(opt);
0678 return nullptr;
0679 }
0680
0681 template <typename T>
0682 T qstyleoption_cast(QStyleOption *opt)
0683 {
0684 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0685 if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type
0686 || int(Opt::Type) == QStyleOption::SO_Default
0687 || (int(Opt::Type) == QStyleOption::SO_Complex
0688 && opt->type > QStyleOption::SO_Complex)))
0689 return static_cast<T>(opt);
0690 return nullptr;
0691 }
0692
0693
0694 class Q_WIDGETS_EXPORT QStyleHintReturn {
0695 public:
0696 enum HintReturnType {
0697 SH_Default=0xf000, SH_Mask, SH_Variant
0698 };
0699
0700 enum StyleOptionType { Type = SH_Default };
0701 enum StyleOptionVersion { Version = 1 };
0702
0703 QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
0704 ~QStyleHintReturn();
0705
0706 int version;
0707 int type;
0708 };
0709
0710 class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
0711 public:
0712 enum StyleOptionType { Type = SH_Mask };
0713 enum StyleOptionVersion { Version = 1 };
0714
0715 QStyleHintReturnMask();
0716 ~QStyleHintReturnMask();
0717
0718 QRegion region;
0719 };
0720
0721 class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
0722 public:
0723 enum StyleOptionType { Type = SH_Variant };
0724 enum StyleOptionVersion { Version = 1 };
0725
0726 QStyleHintReturnVariant();
0727 ~QStyleHintReturnVariant();
0728
0729 QVariant variant;
0730 };
0731
0732 template <typename T>
0733 T qstyleoption_cast(const QStyleHintReturn *hint)
0734 {
0735 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0736 if (hint && hint->version <= Opt::Version &&
0737 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
0738 return static_cast<T>(hint);
0739 return nullptr;
0740 }
0741
0742 template <typename T>
0743 T qstyleoption_cast(QStyleHintReturn *hint)
0744 {
0745 typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt;
0746 if (hint && hint->version <= Opt::Version &&
0747 (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default))
0748 return static_cast<T>(hint);
0749 return nullptr;
0750 }
0751
0752 #if !defined(QT_NO_DEBUG_STREAM)
0753 Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
0754 Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
0755 #endif
0756
0757 QT_END_NAMESPACE
0758
0759 #endif