qstyleoption.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:26k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QSTYLEOPTION_H
  38. #define QSTYLEOPTION_H
  39. #include <QtCore/qvariant.h>
  40. #include <QtGui/qabstractspinbox.h>
  41. #include <QtGui/qicon.h>
  42. #include <QtGui/qmatrix.h>
  43. #include <QtGui/qslider.h>
  44. #include <QtGui/qstyle.h>
  45. #include <QtGui/qtabbar.h>
  46. #include <QtGui/qtabwidget.h>
  47. #include <QtGui/qrubberband.h>
  48. #ifndef QT_NO_ITEMVIEWS
  49. #   include <QtCore/qabstractitemmodel.h>
  50. #endif
  51. QT_BEGIN_HEADER
  52. QT_BEGIN_NAMESPACE
  53. QT_MODULE(Gui)
  54. class QDebug;
  55. class Q_GUI_EXPORT QStyleOption
  56. {
  57. public:
  58.     enum OptionType {
  59.                       SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
  60.                       SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_Q3DockWindow,
  61.                       SO_DockWidget, SO_Q3ListViewItem, SO_ViewItem, SO_TabWidgetFrame,
  62.                       SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
  63.                       SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
  64.                       SO_Q3ListView, SO_TitleBar, SO_GroupBox, SO_SizeGrip,
  65.                       SO_CustomBase = 0xf00,
  66.                       SO_ComplexCustomBase = 0xf000000
  67.                     };
  68.     enum StyleOptionType { Type = SO_Default };
  69.     enum StyleOptionVersion { Version = 1 };
  70.     int version;
  71.     int type;
  72.     QStyle::State state;
  73.     Qt::LayoutDirection direction;
  74.     QRect rect;
  75.     QFontMetrics fontMetrics;
  76.     QPalette palette;
  77.     QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
  78.     QStyleOption(const QStyleOption &other);
  79.     ~QStyleOption();
  80.     void init(const QWidget *w);
  81.     inline void initFrom(const QWidget *w) { init(w); }
  82.     QStyleOption &operator=(const QStyleOption &other);
  83. };
  84. class Q_GUI_EXPORT QStyleOptionFocusRect : public QStyleOption
  85. {
  86. public:
  87.     enum StyleOptionType { Type = SO_FocusRect };
  88.     enum StyleOptionVersion { Version = 1 };
  89.     QColor backgroundColor;
  90.     QStyleOptionFocusRect();
  91.     QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
  92. protected:
  93.     QStyleOptionFocusRect(int version);
  94. };
  95. class Q_GUI_EXPORT QStyleOptionFrame : public QStyleOption
  96. {
  97. public:
  98.     enum StyleOptionType { Type = SO_Frame };
  99.     enum StyleOptionVersion { Version = 1 };
  100.     int lineWidth;
  101.     int midLineWidth;
  102.     QStyleOptionFrame();
  103.     QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
  104. protected:
  105.     QStyleOptionFrame(int version);
  106. };
  107. class Q_GUI_EXPORT QStyleOptionFrameV2 : public QStyleOptionFrame
  108. {
  109. public:
  110.     enum StyleOptionVersion { Version = 2 };
  111.     enum FrameFeature {
  112.         None = 0x00,
  113.         Flat = 0x01
  114.     };
  115.     Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
  116.     FrameFeatures features;
  117.     QStyleOptionFrameV2();
  118.     QStyleOptionFrameV2(const QStyleOptionFrameV2 &other) : QStyleOptionFrame(Version) { *this = other; }
  119.     QStyleOptionFrameV2(const QStyleOptionFrame &other);
  120.     QStyleOptionFrameV2 &operator=(const QStyleOptionFrame &other);
  121. protected:
  122.     QStyleOptionFrameV2(int version);
  123. };
  124. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrameV2::FrameFeatures)
  125. #ifndef QT_NO_TABWIDGET
  126. class Q_GUI_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
  127. {
  128. public:
  129.     enum StyleOptionType { Type = SO_TabWidgetFrame };
  130.     enum StyleOptionVersion { Version = 1 };
  131.     int lineWidth;
  132.     int midLineWidth;
  133.     QTabBar::Shape shape;
  134.     QSize tabBarSize;
  135.     QSize rightCornerWidgetSize;
  136.     QSize leftCornerWidgetSize;
  137.     QStyleOptionTabWidgetFrame();
  138.     inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
  139.         : QStyleOption(Version, Type) { *this = other; }
  140. protected:
  141.     QStyleOptionTabWidgetFrame(int version);
  142. };
  143. #endif
  144. #ifndef QT_NO_TABBAR
  145. class Q_GUI_EXPORT QStyleOptionTabBarBase : public QStyleOption
  146. {
  147. public:
  148.     enum StyleOptionType { Type = SO_TabBarBase };
  149.     enum StyleOptionVersion { Version = 1 };
  150.     QTabBar::Shape shape;
  151.     QRect tabBarRect;
  152.     QRect selectedTabRect;
  153.     QStyleOptionTabBarBase();
  154.     QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
  155. protected:
  156.     QStyleOptionTabBarBase(int version);
  157. };
  158. #endif
  159. class Q_GUI_EXPORT QStyleOptionHeader : public QStyleOption
  160. {
  161. public:
  162.     enum StyleOptionType { Type = SO_Header };
  163.     enum StyleOptionVersion { Version = 1 };
  164.     enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
  165.     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
  166.                             NextAndPreviousAreSelected };
  167.     enum SortIndicator { None, SortUp, SortDown };
  168.     int section;
  169.     QString text;
  170.     Qt::Alignment textAlignment;
  171.     QIcon icon;
  172.     Qt::Alignment iconAlignment;
  173.     SectionPosition position;
  174.     SelectedPosition selectedPosition;
  175.     SortIndicator sortIndicator;
  176.     Qt::Orientation orientation;
  177.     QStyleOptionHeader();
  178.     QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
  179. protected:
  180.     QStyleOptionHeader(int version);
  181. };
  182. class Q_GUI_EXPORT QStyleOptionButton : public QStyleOption
  183. {
  184. public:
  185.     enum StyleOptionType { Type = SO_Button };
  186.     enum StyleOptionVersion { Version = 1 };
  187.     enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
  188.                          AutoDefaultButton = 0x08, CommandLinkButton = 0x10  };
  189.     Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
  190.     ButtonFeatures features;
  191.     QString text;
  192.     QIcon icon;
  193.     QSize iconSize;
  194.     QStyleOptionButton();
  195.     QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
  196. protected:
  197.     QStyleOptionButton(int version);
  198. };
  199. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
  200. #ifndef QT_NO_TABBAR
  201. class Q_GUI_EXPORT QStyleOptionTab : public QStyleOption
  202. {
  203. public:
  204.     enum StyleOptionType { Type = SO_Tab };
  205.     enum StyleOptionVersion { Version = 1 };
  206.     enum TabPosition { Beginning, Middle, End, OnlyOneTab };
  207.     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
  208.     enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
  209.                         RightCornerWidget = 0x02 };
  210.     Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
  211.     QTabBar::Shape shape;
  212.     QString text;
  213.     QIcon icon;
  214.     int row;
  215.     TabPosition position;
  216.     SelectedPosition selectedPosition;
  217.     CornerWidgets cornerWidgets;
  218.     QStyleOptionTab();
  219.     QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
  220. protected:
  221.     QStyleOptionTab(int version);
  222. };
  223. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
  224. class Q_GUI_EXPORT QStyleOptionTabV2 : public QStyleOptionTab
  225. {
  226. public:
  227.     enum StyleOptionVersion { Version = 2 };
  228.     QSize iconSize;
  229.     QStyleOptionTabV2();
  230.     QStyleOptionTabV2(const QStyleOptionTabV2 &other) : QStyleOptionTab(Version) { *this = other; }
  231.     QStyleOptionTabV2(const QStyleOptionTab &other);
  232.     QStyleOptionTabV2 &operator=(const QStyleOptionTab &other);
  233. protected:
  234.     QStyleOptionTabV2(int version);
  235. };
  236. #endif
  237. #ifndef QT_NO_TOOLBAR
  238. class Q_GUI_EXPORT QStyleOptionToolBar : public QStyleOption
  239. {
  240. public:
  241.     enum StyleOptionType { Type = SO_ToolBar };
  242.     enum StyleOptionVersion { Version = 1 };
  243.     enum ToolBarPosition { Beginning, Middle, End, OnlyOne };
  244.     enum ToolBarFeature { None = 0x0, Movable = 0x1 };
  245.     Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature)
  246.     ToolBarPosition positionOfLine; // The toolbar line position
  247.     ToolBarPosition positionWithinLine; // The position within a toolbar
  248.     Qt::ToolBarArea toolBarArea; // The toolbar docking area
  249.     ToolBarFeatures features;
  250.     int lineWidth;
  251.     int midLineWidth;
  252.     QStyleOptionToolBar();
  253.     QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; }
  254. protected:
  255.     QStyleOptionToolBar(int version);
  256. };
  257. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
  258. #endif
  259. class Q_GUI_EXPORT QStyleOptionProgressBar : public QStyleOption
  260. {
  261. public:
  262.     enum StyleOptionType { Type = SO_ProgressBar };
  263.     enum StyleOptionVersion { Version = 1 };
  264.     int minimum;
  265.     int maximum;
  266.     int progress;
  267.     QString text;
  268.     Qt::Alignment textAlignment;
  269.     bool textVisible;
  270.     QStyleOptionProgressBar();
  271.     QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
  272. protected:
  273.     QStyleOptionProgressBar(int version);
  274. };
  275. // Adds style info for vertical progress bars
  276. class Q_GUI_EXPORT QStyleOptionProgressBarV2 : public QStyleOptionProgressBar
  277. {
  278. public:
  279.     enum StyleOptionType { Type = SO_ProgressBar };
  280.     enum StyleOptionVersion { Version = 2 };
  281.     Qt::Orientation orientation;
  282.     bool invertedAppearance;
  283.     bool bottomToTop;
  284.     QStyleOptionProgressBarV2();
  285.     QStyleOptionProgressBarV2(const QStyleOptionProgressBar &other);
  286.     QStyleOptionProgressBarV2(const QStyleOptionProgressBarV2 &other);
  287.     QStyleOptionProgressBarV2 &operator=(const QStyleOptionProgressBar &other);
  288. protected:
  289.     QStyleOptionProgressBarV2(int version);
  290. };
  291. class Q_GUI_EXPORT QStyleOptionMenuItem : public QStyleOption
  292. {
  293. public:
  294.     enum StyleOptionType { Type = SO_MenuItem };
  295.     enum StyleOptionVersion { Version = 1 };
  296.     enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin,
  297.                         EmptyArea };
  298.     enum CheckType { NotCheckable, Exclusive, NonExclusive };
  299.     MenuItemType menuItemType;
  300.     CheckType checkType;
  301.     bool checked;
  302.     bool menuHasCheckableItems;
  303.     QRect menuRect;
  304.     QString text;
  305.     QIcon icon;
  306.     int maxIconWidth;
  307.     int tabWidth;
  308.     QFont font;
  309.     QStyleOptionMenuItem();
  310.     QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
  311. protected:
  312.     QStyleOptionMenuItem(int version);
  313. };
  314. class Q_GUI_EXPORT QStyleOptionQ3ListViewItem : public QStyleOption
  315. {
  316. public:
  317.     enum StyleOptionType { Type = SO_Q3ListViewItem };
  318.     enum StyleOptionVersion { Version = 1 };
  319.     enum Q3ListViewItemFeature { None = 0x00, Expandable = 0x01, MultiLine = 0x02, Visible = 0x04,
  320.                                  ParentControl = 0x08 };
  321.     Q_DECLARE_FLAGS(Q3ListViewItemFeatures, Q3ListViewItemFeature)
  322.     Q3ListViewItemFeatures features;
  323.     int height;
  324.     int totalHeight;
  325.     int itemY;
  326.     int childCount;
  327.     QStyleOptionQ3ListViewItem();
  328.     QStyleOptionQ3ListViewItem(const QStyleOptionQ3ListViewItem &other) : QStyleOption(Version, Type) { *this = other; }
  329. protected:
  330.     QStyleOptionQ3ListViewItem(int version);
  331. };
  332. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionQ3ListViewItem::Q3ListViewItemFeatures)
  333. class Q_GUI_EXPORT QStyleOptionQ3DockWindow : public QStyleOption
  334. {
  335. public:
  336.     enum StyleOptionType { Type = SO_Q3DockWindow };
  337.     enum StyleOptionVersion { Version = 1 };
  338.     bool docked;
  339.     bool closeEnabled;
  340.     QStyleOptionQ3DockWindow();
  341.     QStyleOptionQ3DockWindow(const QStyleOptionQ3DockWindow &other) : QStyleOption(Version, Type) { *this = other; }
  342. protected:
  343.     QStyleOptionQ3DockWindow(int version);
  344. };
  345. class Q_GUI_EXPORT QStyleOptionDockWidget : public QStyleOption
  346. {
  347. public:
  348.     enum StyleOptionType { Type = SO_DockWidget };
  349.     enum StyleOptionVersion { Version = 1 };
  350.     QString title;
  351.     bool closable;
  352.     bool movable;
  353.     bool floatable;
  354.     QStyleOptionDockWidget();
  355.     QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
  356. protected:
  357.     QStyleOptionDockWidget(int version);
  358. };
  359. class Q_GUI_EXPORT QStyleOptionDockWidgetV2 : public QStyleOptionDockWidget
  360. {
  361. public:
  362.     enum StyleOptionVersion { Version = 2 };
  363.     bool verticalTitleBar;
  364.     QStyleOptionDockWidgetV2();
  365.     QStyleOptionDockWidgetV2(const QStyleOptionDockWidgetV2 &other)
  366.         : QStyleOptionDockWidget(Version) { *this = other; }
  367.     QStyleOptionDockWidgetV2(const QStyleOptionDockWidget &other);
  368.     QStyleOptionDockWidgetV2 &operator = (const QStyleOptionDockWidget &other);
  369. protected:
  370.     QStyleOptionDockWidgetV2(int version);
  371. };
  372. class Q_GUI_EXPORT QStyleOptionViewItem : public QStyleOption
  373. {
  374. public:
  375.     enum StyleOptionType { Type = SO_ViewItem };
  376.     enum StyleOptionVersion { Version = 1 };
  377.     enum Position { Left, Right, Top, Bottom };
  378.     Qt::Alignment displayAlignment;
  379.     Qt::Alignment decorationAlignment;
  380.     Qt::TextElideMode textElideMode;
  381.     Position decorationPosition;
  382.     QSize decorationSize;
  383.     QFont font;
  384.     bool showDecorationSelected;
  385.     QStyleOptionViewItem();
  386.     QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
  387. protected:
  388.     QStyleOptionViewItem(int version);
  389. };
  390. class Q_GUI_EXPORT QStyleOptionViewItemV2 : public QStyleOptionViewItem
  391. {
  392. public:
  393.     enum StyleOptionVersion { Version = 2 };
  394.     enum ViewItemFeature {
  395.         None = 0x00,
  396.         WrapText = 0x01,
  397.         Alternate = 0x02,
  398.         HasCheckIndicator = 0x04,
  399.         HasDisplay = 0x08,
  400.         HasDecoration = 0x10
  401.     };
  402.     Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
  403.     ViewItemFeatures features;
  404.     QStyleOptionViewItemV2();
  405.     QStyleOptionViewItemV2(const QStyleOptionViewItemV2 &other) : QStyleOptionViewItem(Version) { *this = other; }
  406.     QStyleOptionViewItemV2(const QStyleOptionViewItem &other);
  407.     QStyleOptionViewItemV2 &operator=(const QStyleOptionViewItem &other);
  408. protected:
  409.     QStyleOptionViewItemV2(int version);
  410. };
  411. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItemV2::ViewItemFeatures)
  412. class Q_GUI_EXPORT QStyleOptionViewItemV3 : public QStyleOptionViewItemV2
  413. {
  414. public:
  415.     enum StyleOptionVersion { Version = 3 };
  416.     QLocale locale;
  417.     const QWidget *widget;
  418.     QStyleOptionViewItemV3();
  419.     QStyleOptionViewItemV3(const QStyleOptionViewItemV3 &other)
  420.         : QStyleOptionViewItemV2(Version) { *this = other; }
  421.     QStyleOptionViewItemV3(const QStyleOptionViewItem &other);
  422.     QStyleOptionViewItemV3 &operator = (const QStyleOptionViewItem &other);
  423. protected:
  424.     QStyleOptionViewItemV3(int version);
  425. };
  426. #ifndef QT_NO_ITEMVIEWS
  427. class Q_GUI_EXPORT QStyleOptionViewItemV4 : public QStyleOptionViewItemV3
  428. {
  429. public:
  430.     enum StyleOptionVersion { Version = 4 };
  431.     enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
  432.     QModelIndex index;
  433.     Qt::CheckState checkState;
  434.     QIcon icon;
  435.     QString text;
  436.     ViewItemPosition viewItemPosition;
  437.     QBrush backgroundBrush;
  438.     QStyleOptionViewItemV4();
  439.     QStyleOptionViewItemV4(const QStyleOptionViewItemV4 &other)
  440.         : QStyleOptionViewItemV3(Version) { *this = other; }
  441.     QStyleOptionViewItemV4(const QStyleOptionViewItem &other);
  442.     QStyleOptionViewItemV4 &operator = (const QStyleOptionViewItem &other);
  443. protected:
  444.     QStyleOptionViewItemV4(int version);
  445. };
  446. #endif
  447. class Q_GUI_EXPORT QStyleOptionToolBox : public QStyleOption
  448. {
  449. public:
  450.     enum StyleOptionType { Type = SO_ToolBox };
  451.     enum StyleOptionVersion { Version = 1 };
  452.     QString text;
  453.     QIcon icon;
  454.     QStyleOptionToolBox();
  455.     QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
  456. protected:
  457.     QStyleOptionToolBox(int version);
  458. };
  459. class Q_GUI_EXPORT QStyleOptionToolBoxV2 : public QStyleOptionToolBox
  460. {
  461. public:
  462.     enum StyleOptionVersion { Version = 2 };
  463.     enum TabPosition { Beginning, Middle, End, OnlyOneTab };
  464.     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
  465.     TabPosition position;
  466.     SelectedPosition selectedPosition;
  467.     QStyleOptionToolBoxV2();
  468.     QStyleOptionToolBoxV2(const QStyleOptionToolBoxV2 &other) : QStyleOptionToolBox(Version) { *this = other; }
  469.     QStyleOptionToolBoxV2(const QStyleOptionToolBox &other);
  470.     QStyleOptionToolBoxV2 &operator=(const QStyleOptionToolBox &other);
  471. protected:
  472.     QStyleOptionToolBoxV2(int version);
  473. };
  474. #ifndef QT_NO_RUBBERBAND
  475. class Q_GUI_EXPORT QStyleOptionRubberBand : public QStyleOption
  476. {
  477. public:
  478.     enum StyleOptionType { Type = SO_RubberBand };
  479.     enum StyleOptionVersion { Version = 1 };
  480.     QRubberBand::Shape shape;
  481.     bool opaque;
  482.     QStyleOptionRubberBand();
  483.     QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
  484. protected:
  485.     QStyleOptionRubberBand(int version);
  486. };
  487. #endif // QT_NO_RUBBERBAND
  488. // -------------------------- Complex style options -------------------------------
  489. class Q_GUI_EXPORT QStyleOptionComplex : public QStyleOption
  490. {
  491. public:
  492.     enum StyleOptionType { Type = SO_Complex };
  493.     enum StyleOptionVersion { Version = 1 };
  494.     QStyle::SubControls subControls;
  495.     QStyle::SubControls activeSubControls;
  496.     QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
  497.     QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
  498. };
  499. #ifndef QT_NO_SLIDER
  500. class Q_GUI_EXPORT QStyleOptionSlider : public QStyleOptionComplex
  501. {
  502. public:
  503.     enum StyleOptionType { Type = SO_Slider };
  504.     enum StyleOptionVersion { Version = 1 };
  505.     Qt::Orientation orientation;
  506.     int minimum;
  507.     int maximum;
  508.     QSlider::TickPosition tickPosition;
  509.     int tickInterval;
  510.     bool upsideDown;
  511.     int sliderPosition;
  512.     int sliderValue;
  513.     int singleStep;
  514.     int pageStep;
  515.     qreal notchTarget;
  516.     bool dialWrapping;
  517.     QStyleOptionSlider();
  518.     QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  519. protected:
  520.     QStyleOptionSlider(int version);
  521. };
  522. #endif // QT_NO_SLIDER
  523. #ifndef QT_NO_SPINBOX
  524. class Q_GUI_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
  525. {
  526. public:
  527.     enum StyleOptionType { Type = SO_SpinBox };
  528.     enum StyleOptionVersion { Version = 1 };
  529.     QAbstractSpinBox::ButtonSymbols buttonSymbols;
  530.     QAbstractSpinBox::StepEnabled stepEnabled;
  531.     bool frame;
  532.     QStyleOptionSpinBox();
  533.     QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  534. protected:
  535.     QStyleOptionSpinBox(int version);
  536. };
  537. #endif // QT_NO_SPINBOX
  538. class Q_GUI_EXPORT QStyleOptionQ3ListView : public QStyleOptionComplex
  539. {
  540. public:
  541.     enum StyleOptionType { Type = SO_Q3ListView };
  542.     enum StyleOptionVersion { Version = 1 };
  543.     QList<QStyleOptionQ3ListViewItem> items;
  544.     QPalette viewportPalette;
  545.     QPalette::ColorRole viewportBGRole;
  546.     int sortColumn;
  547.     int itemMargin;
  548.     int treeStepSize;
  549.     bool rootIsDecorated;
  550.     QStyleOptionQ3ListView();
  551.     QStyleOptionQ3ListView(const QStyleOptionQ3ListView &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  552. protected:
  553.     QStyleOptionQ3ListView(int version);
  554. };
  555. class Q_GUI_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
  556. {
  557. public:
  558.     enum StyleOptionType { Type = SO_ToolButton };
  559.     enum StyleOptionVersion { Version = 1 };
  560.     enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
  561.                              HasMenu = 0x10 };
  562.     Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
  563.     ToolButtonFeatures features;
  564.     QIcon icon;
  565.     QSize iconSize;
  566.     QString text;
  567.     Qt::ArrowType arrowType;
  568.     Qt::ToolButtonStyle toolButtonStyle;
  569.     QPoint pos;
  570.     QFont font;
  571.     QStyleOptionToolButton();
  572.     QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  573. protected:
  574.     QStyleOptionToolButton(int version);
  575. };
  576. Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
  577. class Q_GUI_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
  578. {
  579. public:
  580.     enum StyleOptionType { Type = SO_ComboBox };
  581.     enum StyleOptionVersion { Version = 1 };
  582.     bool editable;
  583.     QRect popupRect;
  584.     bool frame;
  585.     QString currentText;
  586.     QIcon currentIcon;
  587.     QSize iconSize;
  588.     QStyleOptionComboBox();
  589.     QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  590. protected:
  591.     QStyleOptionComboBox(int version);
  592. };
  593. class Q_GUI_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
  594. {
  595. public:
  596.     enum StyleOptionType { Type = SO_TitleBar };
  597.     enum StyleOptionVersion { Version = 1 };
  598.     QString text;
  599.     QIcon icon;
  600.     int titleBarState;
  601.     Qt::WindowFlags titleBarFlags;
  602.     QStyleOptionTitleBar();
  603.     QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  604. protected:
  605.     QStyleOptionTitleBar(int version);
  606. };
  607. class Q_GUI_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
  608. {
  609. public:
  610.     enum StyleOptionType { Type = SO_GroupBox };
  611.     enum StyleOptionVersion { Version = 1 };
  612.     QStyleOptionFrameV2::FrameFeatures features;
  613.     QString text;
  614.     Qt::Alignment textAlignment;
  615.     QColor textColor;
  616.     int lineWidth;
  617.     int midLineWidth;
  618.     QStyleOptionGroupBox();
  619.     QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  620. protected:
  621.     QStyleOptionGroupBox(int version);
  622. };
  623. class Q_GUI_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
  624. {
  625. public:
  626.     enum StyleOptionType { Type = SO_SizeGrip };
  627.     enum StyleOptionVersion { Version = 1 };
  628.     Qt::Corner corner;
  629.     QStyleOptionSizeGrip();
  630.     QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
  631. protected:
  632.     QStyleOptionSizeGrip(int version);
  633. };
  634. class Q_GUI_EXPORT QStyleOptionGraphicsItem : public QStyleOption
  635. {
  636. public:
  637.     enum StyleOptionType { Type = SO_GraphicsItem };
  638.     enum StyleOptionVersion { Version = 1 };
  639.     QRectF exposedRect;
  640.     QMatrix matrix;
  641.     qreal levelOfDetail;
  642.     QStyleOptionGraphicsItem();
  643.     QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
  644. protected:
  645.     QStyleOptionGraphicsItem(int version);
  646. };
  647. template <typename T>
  648. T qstyleoption_cast(const QStyleOption *opt)
  649. {
  650.     if (opt && opt->version >= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
  651.         || int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
  652.         || (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
  653.             && opt->type > QStyleOption::SO_Complex)))
  654.         return static_cast<T>(opt);
  655.     return 0;
  656. }
  657. template <typename T>
  658. T qstyleoption_cast(QStyleOption *opt)
  659. {
  660.     if (opt && opt->version >= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
  661.         || int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
  662.         || (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
  663.             && opt->type > QStyleOption::SO_Complex)))
  664.         return static_cast<T>(opt);
  665.     return 0;
  666. }
  667. // -------------------------- QStyleHintReturn -------------------------------
  668. class Q_GUI_EXPORT QStyleHintReturn {
  669. public:
  670.     enum HintReturnType {
  671.         SH_Default=0xf000, SH_Mask, SH_Variant
  672.     };
  673.     enum StyleOptionType { Type = SH_Default };
  674.     enum StyleOptionVersion { Version = 1 };
  675.     QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
  676.     ~QStyleHintReturn();
  677.     int version;
  678.     int type;
  679. };
  680. class Q_GUI_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
  681. public:
  682.     enum StyleOptionType { Type = SH_Mask };
  683.     enum StyleOptionVersion { Version = 1 };
  684.     QStyleHintReturnMask();
  685.     QRegion region;
  686. };
  687. class Q_GUI_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
  688. public:
  689.     enum StyleOptionType { Type = SH_Variant };
  690.     enum StyleOptionVersion { Version = 1 };
  691.     QStyleHintReturnVariant();
  692.     QVariant variant;
  693. };
  694. template <typename T>
  695. T qstyleoption_cast(const QStyleHintReturn *hint)
  696. {
  697.     if (hint && hint->version <= static_cast<T>(0)->Version &&
  698.         (hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
  699.         return static_cast<T>(hint);
  700.     return 0;
  701. }
  702. template <typename T>
  703. T qstyleoption_cast(QStyleHintReturn *hint)
  704. {
  705.     if (hint && hint->version <= static_cast<T>(0)->Version &&
  706.         (hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
  707.         return static_cast<T>(hint);
  708.     return 0;
  709. }
  710. #if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_NO_DEBUG)
  711. Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
  712. Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
  713. #endif
  714. QT_END_NAMESPACE
  715. QT_END_HEADER
  716. #endif // QSTYLEOPTION_H