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