1
/****************************************************************************
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
5
** This file is part of the style module of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
29
#ifndef QSTYLEOPTION_H
30
#define QSTYLEOPTION_H
32
#include "QtGui/qabstractspinbox.h"
33
#include "QtGui/qicon.h"
34
#include "QtGui/qslider.h"
35
#include "QtGui/qstyle.h"
36
#include "QtGui/qtabbar.h"
37
#include "QtGui/qtabwidget.h"
38
#include "QtGui/qrubberband.h"
42
class Q_GUI_EXPORT QStyleOption
46
SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
47
SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_Q3DockWindow,
48
SO_DockWidget, SO_Q3ListViewItem, SO_ViewItem, SO_TabWidgetFrame,
49
SO_TabBarBase, SO_RubberBand,
51
SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
52
SO_Q3ListView, SO_TitleBar,
54
SO_CustomBase = 0xf00,
55
SO_ComplexCustomBase = 0xf000000
58
enum { Type = SO_Default };
64
Qt::LayoutDirection direction;
66
QFontMetrics fontMetrics;
69
QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
70
QStyleOption(const QStyleOption &other);
73
void init(const QWidget *w);
74
QStyleOption &operator=(const QStyleOption &other);
77
class Q_GUI_EXPORT QStyleOptionFocusRect : public QStyleOption
80
enum { Type = SO_FocusRect };
83
QColor backgroundColor;
85
QStyleOptionFocusRect();
86
QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
89
QStyleOptionFocusRect(int version);
92
class Q_GUI_EXPORT QStyleOptionFrame : public QStyleOption
95
enum { Type = SO_Frame };
102
QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
105
QStyleOptionFrame(int version);
108
class Q_GUI_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
111
enum { Type = SO_TabWidgetFrame };
112
enum { Version = 1 };
116
QTabBar::Shape shape;
118
QSize rightCornerWidgetSize;
119
QSize leftCornerWidgetSize;
121
QStyleOptionTabWidgetFrame();
122
inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
123
: QStyleOption(Version, Type) { *this = other; }
126
QStyleOptionTabWidgetFrame(int version);
129
class Q_GUI_EXPORT QStyleOptionTabBarBase : public QStyleOption
132
enum { Type = SO_TabBarBase };
133
enum { Version = 1 };
135
QTabBar::Shape shape;
137
QRect selectedTabRect;
139
QStyleOptionTabBarBase();
140
QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
143
QStyleOptionTabBarBase(int version);
146
class Q_GUI_EXPORT QStyleOptionHeader : public QStyleOption
149
enum { Type = SO_Header };
150
enum { Version = 1 };
152
enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
153
enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
154
NextAndPreviousAreSelected };
155
enum SortIndicator { None, SortUp, SortDown };
159
Qt::Alignment textAlignment;
161
Qt::Alignment iconAlignment;
162
SectionPosition position;
163
SelectedPosition selectedPosition;
164
SortIndicator sortIndicator;
165
Qt::Orientation orientation;
167
QStyleOptionHeader();
168
QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
171
QStyleOptionHeader(int version);
174
class Q_GUI_EXPORT QStyleOptionButton : public QStyleOption
177
enum { Type = SO_Button };
178
enum { Version = 1 };
180
enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
181
AutoDefaultButton = 0x08 };
182
Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
184
ButtonFeatures features;
189
QStyleOptionButton();
190
QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
193
QStyleOptionButton(int version);
196
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
198
class Q_GUI_EXPORT QStyleOptionTab : public QStyleOption
201
enum { Type = SO_Tab };
202
enum { Version = 1 };
204
enum TabPosition { Beginning, Middle, End, OnlyOneTab };
205
enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
206
enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
207
RightCornerWidget = 0x02 };
208
Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
210
QTabBar::Shape shape;
214
TabPosition position;
215
SelectedPosition selectedPosition;
216
CornerWidgets cornerWidgets;
219
QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
222
QStyleOptionTab(int version);
225
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
227
class Q_GUI_EXPORT QStyleOptionProgressBar : public QStyleOption
230
enum { Type = SO_ProgressBar };
231
enum { Version = 1 };
237
Qt::Alignment textAlignment;
240
QStyleOptionProgressBar();
241
QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
244
QStyleOptionProgressBar(int version);
247
class Q_GUI_EXPORT QStyleOptionMenuItem : public QStyleOption
250
enum { Type = SO_MenuItem };
251
enum { Version = 1 };
253
enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin,
255
enum CheckType { NotCheckable, Exclusive, NonExclusive };
257
MenuItemType menuItemType;
260
bool menuHasCheckableItems;
268
QStyleOptionMenuItem();
269
QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
272
QStyleOptionMenuItem(int version);
275
class Q_GUI_EXPORT QStyleOptionQ3ListViewItem : public QStyleOption
278
enum { Type = SO_Q3ListViewItem };
279
enum { Version = 1 };
281
enum Q3ListViewItemFeature { None = 0x00, Expandable = 0x01, MultiLine = 0x02, Visible = 0x04,
282
ParentControl = 0x08 };
283
Q_DECLARE_FLAGS(Q3ListViewItemFeatures, Q3ListViewItemFeature)
285
Q3ListViewItemFeatures features;
291
QStyleOptionQ3ListViewItem();
292
QStyleOptionQ3ListViewItem(const QStyleOptionQ3ListViewItem &other) : QStyleOption(Version, Type) { *this = other; }
295
QStyleOptionQ3ListViewItem(int version);
298
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionQ3ListViewItem::Q3ListViewItemFeatures)
300
class Q_GUI_EXPORT QStyleOptionQ3DockWindow : public QStyleOption
303
enum { Type = SO_Q3DockWindow };
304
enum { Version = 1 };
309
QStyleOptionQ3DockWindow();
310
QStyleOptionQ3DockWindow(const QStyleOptionQ3DockWindow &other) : QStyleOption(Version, Type) { *this = other; }
313
QStyleOptionQ3DockWindow(int version);
316
class Q_GUI_EXPORT QStyleOptionDockWidget : public QStyleOption
319
enum { Type = SO_DockWidget };
320
enum { Version = 1 };
327
QStyleOptionDockWidget();
328
QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
331
QStyleOptionDockWidget(int version);
334
class Q_GUI_EXPORT QStyleOptionViewItem : public QStyleOption
337
enum { Type = SO_ViewItem };
338
enum { Version = 1 };
340
enum Position { Left, Right, Top, Bottom };
342
Qt::Alignment displayAlignment;
343
Qt::Alignment decorationAlignment;
344
Qt::TextElideMode textElideMode;
345
Position decorationPosition;
346
QSize decorationSize;
348
bool showDecorationSelected;
350
QStyleOptionViewItem();
351
QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
354
QStyleOptionViewItem(int version);
357
class Q_GUI_EXPORT QStyleOptionToolBox : public QStyleOption
360
enum { Type = SO_ToolBox };
361
enum { Version = 1 };
366
QStyleOptionToolBox();
367
QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
370
QStyleOptionToolBox(int version);
373
class Q_GUI_EXPORT QStyleOptionRubberBand : public QStyleOption
376
enum { Type = SO_RubberBand };
377
enum { Version = 1 };
379
QRubberBand::Shape shape;
382
QStyleOptionRubberBand();
383
QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
386
QStyleOptionRubberBand(int version);
389
// -------------------------- Complex style options -------------------------------
390
class Q_GUI_EXPORT QStyleOptionComplex : public QStyleOption
393
enum { Type = SO_Complex };
394
enum { Version = 1 };
396
QStyle::SubControls subControls;
397
QStyle::SubControls activeSubControls;
399
QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
400
QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
403
class Q_GUI_EXPORT QStyleOptionSlider : public QStyleOptionComplex
406
enum { Type = SO_Slider };
407
enum { Version = 1 };
409
Qt::Orientation orientation;
412
QSlider::TickPosition tickPosition;
422
QStyleOptionSlider();
423
QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
426
QStyleOptionSlider(int version);
429
class Q_GUI_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
432
enum { Type = SO_SpinBox };
433
enum { Version = 1 };
435
QAbstractSpinBox::ButtonSymbols buttonSymbols;
436
QAbstractSpinBox::StepEnabled stepEnabled;
439
QStyleOptionSpinBox();
440
QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
443
QStyleOptionSpinBox(int version);
446
class Q_GUI_EXPORT QStyleOptionQ3ListView : public QStyleOptionComplex
449
enum { Type = SO_Q3ListView };
450
enum { Version = 1 };
452
QList<QStyleOptionQ3ListViewItem> items;
453
QPalette viewportPalette;
454
QPalette::ColorRole viewportBGRole;
458
bool rootIsDecorated;
460
QStyleOptionQ3ListView();
461
QStyleOptionQ3ListView(const QStyleOptionQ3ListView &other) : QStyleOptionComplex(Version, Type) { *this = other; }
464
QStyleOptionQ3ListView(int version);
467
class Q_GUI_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
470
enum { Type = SO_ToolButton };
471
enum { Version = 1 };
473
enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, PopupDelay = 0x08 };
474
Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
476
ToolButtonFeatures features;
480
Qt::ArrowType arrowType;
481
Qt::ToolButtonStyle toolButtonStyle;
485
QStyleOptionToolButton();
486
QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
489
QStyleOptionToolButton(int version);
492
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
494
class Q_GUI_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
497
enum { Type = SO_ComboBox };
498
enum { Version = 1 };
507
QStyleOptionComboBox();
508
QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
511
QStyleOptionComboBox(int version);
514
class Q_GUI_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
517
enum { Type = SO_TitleBar };
518
enum { Version = 1 };
523
Qt::WFlags titleBarFlags;
525
QStyleOptionTitleBar();
526
QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
529
QStyleOptionTitleBar(int version);
532
template <typename T>
533
T qstyleoption_cast(const QStyleOption *opt)
535
if (opt && opt->version <= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
536
|| int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
537
|| (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
538
&& opt->type > QStyleOption::SO_Complex)))
539
return static_cast<T>(opt);
543
template <typename T>
544
T qstyleoption_cast(QStyleOption *opt)
546
if (opt && opt->version <= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
547
|| int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
548
|| (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
549
&& opt->type > QStyleOption::SO_Complex)))
550
return static_cast<T>(opt);
554
// -------------------------- QStyleHintReturn -------------------------------
555
class Q_GUI_EXPORT QStyleHintReturn {
557
enum HintReturnType {
558
SH_Default=0xf000, SH_Mask
561
enum { Type = SH_Default };
562
enum { Version = 1 };
564
QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
571
class Q_GUI_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
573
enum { Type = SH_Mask };
574
enum { Version = 1 };
576
QStyleHintReturnMask();
581
template <typename T>
582
T qstyleoption_cast(const QStyleHintReturn *hint)
584
if (hint && hint->version <= static_cast<T>(0)->Version &&
585
(hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
586
return static_cast<T>(hint);
590
template <typename T>
591
T qstyleoption_cast(QStyleHintReturn *hint)
593
if (hint && hint->version <= static_cast<T>(0)->Version &&
594
(hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
595
return static_cast<T>(hint);
600
Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
601
Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);