1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtWidgets module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #include <QtWidgets/private/qtwidgetsglobal_p.h>
41 #include "private/qstylehelper_p.h"
42 #include "qstyleoption.h"
43 #include "qapplication.h"
44 #include <qdebug.h>
45 #include <QtCore/qmath.h>
46 
47 QT_BEGIN_NAMESPACE
48 
49 /*!
50     \class QStyleOption
51     \brief The QStyleOption class stores the parameters used by QStyle functions.
52 
53     \ingroup appearance
54     \inmodule QtWidgets
55 
56     QStyleOption and its subclasses contain all the information that
57     QStyle functions need to draw a graphical element.
58 
59     For performance reasons, there are few member functions and the
60     access to the member variables is direct (i.e., using the \c . or
61     \c -> operator). This low-level feel makes the structures
62     straightforward to use and emphasizes that these are simply
63     parameters used by the style functions.
64 
65     The caller of a QStyle function usually creates QStyleOption
66     objects on the stack. This combined with Qt's extensive use of
67     \l{implicit sharing} for types such as QString, QPalette, and
68     QColor ensures that no memory allocation needlessly takes place.
69 
70     The following code snippet shows how to use a specific
71     QStyleOption subclass to paint a push button:
72 
73     \snippet qstyleoption/main.cpp 0
74 
75     In our example, the control is a QStyle::CE_PushButton, and
76     according to the QStyle::drawControl() documentation the
77     corresponding class is QStyleOptionButton.
78 
79     When reimplementing QStyle functions that take a QStyleOption
80     parameter, you often need to cast the QStyleOption to a subclass.
81     For safety, you can use qstyleoption_cast() to ensure that the
82     pointer type is correct. For example:
83 
84     \snippet qstyleoption/main.cpp 4
85 
86     The qstyleoption_cast() function will return 0 if the object to
87     which \c option points is not of the correct type.
88 
89     For an example demonstrating how style options can be used, see
90     the \l {widgets/styles}{Styles} example.
91 
92     \sa QStyle, QStylePainter
93 */
94 
95 /*!
96     \enum QStyleOption::OptionType
97 
98     This enum is used internally by QStyleOption, its subclasses, and
99     qstyleoption_cast() to determine the type of style option. In
100     general you do not need to worry about this unless you want to
101     create your own QStyleOption subclass and your own styles.
102 
103     \value SO_Button \l QStyleOptionButton
104     \value SO_ComboBox \l QStyleOptionComboBox
105     \value SO_Complex \l QStyleOptionComplex
106     \value SO_Default QStyleOption
107     \value SO_DockWidget \l QStyleOptionDockWidget
108     \value SO_FocusRect \l QStyleOptionFocusRect
109     \value SO_Frame \l QStyleOptionFrame
110     \value SO_GraphicsItem \l QStyleOptionGraphicsItem
111     \value SO_GroupBox \l QStyleOptionGroupBox
112     \value SO_Header \l QStyleOptionHeader
113     \value SO_MenuItem \l QStyleOptionMenuItem
114     \value SO_ProgressBar \l QStyleOptionProgressBar
115     \value SO_RubberBand \l QStyleOptionRubberBand
116     \value SO_SizeGrip \l QStyleOptionSizeGrip
117     \value SO_Slider \l QStyleOptionSlider
118     \value SO_SpinBox \l QStyleOptionSpinBox
119     \value SO_Tab \l QStyleOptionTab
120     \value SO_TabBarBase \l QStyleOptionTabBarBase
121     \value SO_TabWidgetFrame \l QStyleOptionTabWidgetFrame
122     \value SO_TitleBar \l QStyleOptionTitleBar
123     \value SO_ToolBar \l QStyleOptionToolBar
124     \value SO_ToolBox \l QStyleOptionToolBox
125     \value SO_ToolButton \l QStyleOptionToolButton
126     \value SO_ViewItem \l QStyleOptionViewItem (used in Interviews)
127 
128     The following values are used for custom controls:
129 
130     \value SO_CustomBase Reserved for custom QStyleOptions;
131                          all custom controls values must be above this value
132     \value SO_ComplexCustomBase Reserved for custom QStyleOptions;
133                          all custom complex controls values must be above this value
134 
135     \sa type
136 */
137 
138 /*!
139     Constructs a QStyleOption with the specified \a version and \a
140     type.
141 
142     The version has no special meaning for QStyleOption; it can be
143     used by subclasses to distinguish between different version of
144     the same option type.
145 
146     The \l state member variable is initialized to
147     QStyle::State_None.
148 
149     \sa version, type
150 */
151 
QStyleOption(int version,int type)152 QStyleOption::QStyleOption(int version, int type)
153     : version(version), type(type), state(QStyle::State_None),
154       direction(QGuiApplication::layoutDirection()), fontMetrics(QFont()), styleObject(nullptr)
155 {
156 }
157 
158 
159 /*!
160     Destroys this style option object.
161 */
~QStyleOption()162 QStyleOption::~QStyleOption()
163 {
164 }
165 
166 /*!
167     \fn void QStyleOption::initFrom(const QWidget *widget)
168     \since 4.1
169 
170     Initializes the \l state, \l direction, \l rect, \l palette, \l fontMetrics
171     and \l styleObject member variables based on the specified \a widget.
172 
173     This is a convenience function; the member variables can also be
174     initialized manually.
175 
176     \sa QWidget::layoutDirection(), QWidget::rect(),
177         QWidget::palette(), QWidget::fontMetrics()
178 */
179 
180 /*!
181     \obsolete
182 
183     Use initFrom(\a widget) instead.
184 */
init(const QWidget * widget)185 void QStyleOption::init(const QWidget *widget)
186 {
187     QWidget *window = widget->window();
188     state = QStyle::State_None;
189     if (widget->isEnabled())
190         state |= QStyle::State_Enabled;
191     if (widget->hasFocus())
192         state |= QStyle::State_HasFocus;
193     if (window->testAttribute(Qt::WA_KeyboardFocusChange))
194         state |= QStyle::State_KeyboardFocusChange;
195     if (widget->underMouse())
196         state |= QStyle::State_MouseOver;
197     if (window->isActiveWindow())
198         state |= QStyle::State_Active;
199     if (widget->isWindow())
200         state |= QStyle::State_Window;
201     switch (QStyleHelper::widgetSizePolicy(widget)) {
202     case QStyleHelper::SizeSmall:
203         state |= QStyle::State_Small;
204         break;
205     case QStyleHelper::SizeMini:
206         state |= QStyle::State_Mini;
207         break;
208     default:
209         ;
210     }
211 #ifdef QT_KEYPAD_NAVIGATION
212     if (widget->hasEditFocus())
213         state |= QStyle::State_HasEditFocus;
214 #endif
215 
216     direction = widget->layoutDirection();
217     rect = widget->rect();
218     palette = widget->palette();
219     fontMetrics = widget->fontMetrics();
220     styleObject = const_cast<QWidget*>(widget);
221 }
222 
223 /*!
224    Constructs a copy of \a other.
225 */
QStyleOption(const QStyleOption & other)226 QStyleOption::QStyleOption(const QStyleOption &other)
227     : version(Version), type(Type), state(other.state),
228       direction(other.direction), rect(other.rect), fontMetrics(other.fontMetrics),
229       palette(other.palette), styleObject(other.styleObject)
230 {
231 }
232 
233 /*!
234     Assign \a other to this QStyleOption.
235 */
operator =(const QStyleOption & other)236 QStyleOption &QStyleOption::operator=(const QStyleOption &other)
237 {
238     state = other.state;
239     direction = other.direction;
240     rect = other.rect;
241     fontMetrics = other.fontMetrics;
242     palette = other.palette;
243     styleObject = other.styleObject;
244     return *this;
245 }
246 
247 /*!
248     \enum QStyleOption::StyleOptionType
249 
250     This enum is used to hold information about the type of the style option, and
251     is defined for each QStyleOption subclass.
252 
253     \value Type The type of style option provided (\l{SO_Default} for
254            this class).
255 
256     The type is used internally by QStyleOption, its subclasses, and
257     qstyleoption_cast() to determine the type of style option. In
258     general you do not need to worry about this unless you want to
259     create your own QStyleOption subclass and your own styles.
260 
261     \sa StyleOptionVersion
262 */
263 
264 /*!
265     \enum QStyleOption::StyleOptionVersion
266 
267     This enum is used to hold information about the version of the style option, and
268     is defined for each QStyleOption subclass.
269 
270     \value Version 1
271 
272     The version is used by QStyleOption subclasses to implement
273     extensions without breaking compatibility. If you use
274     qstyleoption_cast(), you normally do not need to check it.
275 
276     \sa StyleOptionType
277 */
278 
279 /*!
280     \variable QStyleOption::palette
281     \brief the palette that should be used when painting the control
282 
283     By default, the application's default palette is used.
284 
285     \sa initFrom()
286 */
287 
288 /*!
289     \variable QStyleOption::direction
290     \brief the text layout direction that should be used when drawing text in the control
291 
292     By default, the layout direction is Qt::LeftToRight.
293 
294     \sa initFrom()
295 */
296 
297 /*!
298     \variable QStyleOption::fontMetrics
299     \brief the font metrics that should be used when drawing text in the control
300 
301     By default, the application's default font is used.
302 
303     \sa initFrom()
304 */
305 
306 /*!
307     \variable QStyleOption::styleObject
308     \brief the object being styled
309 
310     The built-in styles support the following types: QWidget, QGraphicsObject and QQuickItem.
311 
312     \sa initFrom()
313 */
314 
315 /*!
316     \variable QStyleOption::rect
317     \brief the area that should be used for various calculations and painting
318 
319     This can have different meanings for different types of elements.
320     For example, for a \l QStyle::CE_PushButton element it would be
321     the rectangle for the entire button, while for a \l
322     QStyle::CE_PushButtonLabel element it would be just the area for
323     the push button label.
324 
325     The default value is a null rectangle, i.e. a rectangle with both
326     the width and the height set to 0.
327 
328     \sa initFrom()
329 */
330 
331 /*!
332     \variable QStyleOption::state
333     \brief the style flags that are used when drawing the control
334 
335     The default value is QStyle::State_None.
336 
337     \sa initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(),
338     QStyle::drawComplexControl(), QStyle::State
339 */
340 
341 /*!
342     \variable QStyleOption::type
343     \brief the option type of the style option
344 
345     The default value is SO_Default.
346 
347     \sa OptionType
348 */
349 
350 /*!
351     \variable QStyleOption::version
352     \brief the version of the style option
353 
354     This value can be used by subclasses to implement extensions
355     without breaking compatibility. If you use the qstyleoption_cast()
356     function, you normally do not need to check it.
357 
358     The default value is 1.
359 */
360 
361 /*!
362     \class QStyleOptionFocusRect
363     \brief The QStyleOptionFocusRect class is used to describe the
364     parameters for drawing a focus rectangle with QStyle.
365 
366     \inmodule QtWidgets
367 
368     For performance reasons, the access to the member variables is
369     direct (i.e., using the \c . or \c -> operator). This low-level feel
370     makes the structures straightforward to use and emphasizes that
371     these are simply parameters used by the style functions.
372 
373     For an example demonstrating how style options can be used, see
374     the \l {widgets/styles}{Styles} example.
375 
376     \sa QStyleOption
377 */
378 
379 /*!
380     Constructs a QStyleOptionFocusRect, initializing the members
381     variables to their default values.
382 */
383 
QStyleOptionFocusRect()384 QStyleOptionFocusRect::QStyleOptionFocusRect()
385     : QStyleOption(Version, SO_FocusRect)
386 {
387     state |= QStyle::State_KeyboardFocusChange; // assume we had one, will be corrected in initFrom()
388 }
389 
390 /*!
391     \internal
392 */
QStyleOptionFocusRect(int version)393 QStyleOptionFocusRect::QStyleOptionFocusRect(int version)
394     : QStyleOption(version, SO_FocusRect)
395 {
396     state |= QStyle::State_KeyboardFocusChange;  // assume we had one, will be corrected in initFrom()
397 }
398 
399 /*!
400     \enum QStyleOptionFocusRect::StyleOptionType
401 
402     This enum is used to hold information about the type of the style option, and
403     is defined for each QStyleOption subclass.
404 
405     \value Type The type of style option provided (\l{SO_FocusRect} for this class).
406 
407     The type is used internally by QStyleOption, its subclasses, and
408     qstyleoption_cast() to determine the type of style option. In
409     general you do not need to worry about this unless you want to
410     create your own QStyleOption subclass and your own styles.
411 
412     \sa StyleOptionVersion
413 */
414 
415 /*!
416     \enum QStyleOptionFocusRect::StyleOptionVersion
417 
418     This enum is used to hold information about the version of the style option, and
419     is defined for each QStyleOption subclass.
420 
421     \value Version 1
422 
423     The version is used by QStyleOption subclasses to implement
424     extensions without breaking compatibility. If you use
425     qstyleoption_cast(), you normally do not need to check it.
426 
427     \sa StyleOptionType
428 */
429 
430 /*!
431     \fn QStyleOptionFocusRect::QStyleOptionFocusRect(const QStyleOptionFocusRect &other)
432 
433     Constructs a copy of the \a other style option.
434 */
435 
436 /*!
437     \variable QStyleOptionFocusRect::backgroundColor
438     \brief the background color on which the focus rectangle is being drawn
439 
440     The default value is an invalid color with the RGB value (0, 0,
441     0). An invalid color is a color that is not properly set up for
442     the underlying window system.
443 */
444 
445 /*!
446     \class QStyleOptionFrame
447     \brief The QStyleOptionFrame class is used to describe the
448     parameters for drawing a frame.
449 
450     \inmodule QtWidgets
451 
452     QStyleOptionFrame is used for drawing several built-in Qt widgets,
453     including QFrame, QGroupBox, QLineEdit, and QMenu.
454 
455     An instance of the QStyleOptionFrame class has
456     \l{QStyleOption::type} {type} SO_Frame and \l{QStyleOption::version}
457     {version} 3.
458 
459     The type is used internally by QStyleOption, its subclasses, and
460     qstyleoption_cast() to determine the type of style option. In
461     general you do not need to worry about this unless you want to
462     create your own QStyleOption subclass and your own styles.  The
463     version is used by QStyleOption subclasses to implement extensions
464     without breaking compatibility. If you use qstyleoption_cast(),
465     you normally do not need to check it.
466 
467     For an example demonstrating how style options can be used, see
468     the \l {widgets/styles}{Styles} example.
469 
470     \sa QStyleOption
471 */
472 
473 /*!
474     \typedef QStyleOptionFrameV2
475     \relates QStyleOptionFrame
476     \obsolete
477 
478     Synonym for QStyleOptionFrame.
479 */
480 
481 /*!
482     \typedef QStyleOptionFrameV3
483     \relates QStyleOptionFrame
484     \obsolete
485 
486     Synonym for QStyleOptionFrame.
487 */
488 
489 /*!
490     Constructs a QStyleOptionFrame, initializing the members
491     variables to their default values.
492 */
493 
QStyleOptionFrame()494 QStyleOptionFrame::QStyleOptionFrame()
495     : QStyleOption(Version, SO_Frame), lineWidth(0), midLineWidth(0),
496       features(None), frameShape(QFrame::NoFrame)
497 {
498 }
499 
500 /*!
501     \internal
502 */
QStyleOptionFrame(int version)503 QStyleOptionFrame::QStyleOptionFrame(int version)
504     : QStyleOption(version, SO_Frame), lineWidth(0), midLineWidth(0),
505       features(None), frameShape(QFrame::NoFrame)
506 {
507 }
508 
509 /*!
510     \fn QStyleOptionFrame::QStyleOptionFrame(const QStyleOptionFrame &other)
511 
512     Constructs a copy of the \a other style option.
513 */
514 
515 /*!
516     \enum QStyleOptionFrame::StyleOptionType
517 
518     This enum is used to hold information about the type of the style option, and
519     is defined for each QStyleOption subclass.
520 
521     \value Type The type of style option provided (\l{SO_Frame} for this class).
522 
523     The type is used internally by QStyleOption, its subclasses, and
524     qstyleoption_cast() to determine the type of style option. In
525     general you do not need to worry about this unless you want to
526     create your own QStyleOption subclass and your own styles.
527 
528     \sa StyleOptionVersion
529 */
530 
531 /*!
532     \enum QStyleOptionFrame::StyleOptionVersion
533 
534     This enum is used to hold information about the version of the style option, and
535     is defined for each QStyleOption subclass.
536 
537     \value Version 3
538 
539     The version is used by QStyleOption subclasses to implement
540     extensions without breaking compatibility. If you use
541     qstyleoption_cast(), you normally do not need to check it.
542 
543     \sa StyleOptionType
544 */
545 
546 /*!
547     \variable QStyleOptionFrame::lineWidth
548     \brief the line width for drawing the frame
549 
550     The default value is 0.
551 
552     \sa QFrame::lineWidth
553 */
554 
555 /*!
556     \variable QStyleOptionFrame::midLineWidth
557     \brief the mid-line width for drawing the frame
558 
559     This is usually used in drawing sunken or raised frames.
560 
561     The default value is 0.
562 
563     \sa QFrame::midLineWidth
564 */
565 
566 /*!
567     \enum QStyleOptionFrame::FrameFeature
568 
569     This enum describes the different types of features a frame can have.
570 
571     \value None Indicates a normal frame.
572     \value Flat Indicates a flat frame.
573     \value Rounded Indicates a rounded frame.
574 */
575 
576 /*!
577     \variable QStyleOptionFrame::features
578     \brief a bitwise OR of the features that describe this frame.
579 
580     \sa FrameFeature
581 */
582 
583 /*!
584     \variable QStyleOptionFrame::frameShape
585     \brief This property holds the frame shape value of the frame.
586 
587     \sa QFrame::frameShape
588 */
589 
590 /*!
591     \class QStyleOptionGroupBox
592     \brief The QStyleOptionGroupBox class describes the parameters for
593     drawing a group box.
594 
595     \since 4.1
596     \inmodule QtWidgets
597 
598     QStyleOptionButton contains all the information that QStyle
599     functions need the various graphical elements of a group box.
600 
601     It holds the lineWidth and the midLineWidth for drawing the panel,
602     the group box's \l {text}{title} and the title's \l
603     {textAlignment}{alignment} and \l {textColor}{color}.
604 
605     For performance reasons, the access to the member variables is
606     direct (i.e., using the \c . or \c -> operator). This low-level feel
607     makes the structures straightforward to use and emphasizes that
608     these are simply parameters used by the style functions.
609 
610     For an example demonstrating how style options can be used, see
611     the \l {widgets/styles}{Styles} example.
612 
613     \sa QStyleOption, QStyleOptionComplex, QGroupBox
614 */
615 
616 /*!
617     \enum QStyleOptionGroupBox::StyleOptionType
618 
619     This enum is used to hold information about the type of the style option, and
620     is defined for each QStyleOption subclass.
621 
622     \value Type The type of style option provided (\l{SO_GroupBox} for this class).
623 
624     The type is used internally by QStyleOption, its subclasses, and
625     qstyleoption_cast() to determine the type of style option. In
626     general you do not need to worry about this unless you want to
627     create your own QStyleOption subclass and your own styles.
628 
629     \sa StyleOptionVersion
630 */
631 
632 /*!
633     \enum QStyleOptionGroupBox::StyleOptionVersion
634 
635     This enum is used to hold information about the version of the style option, and
636     is defined for each QStyleOption subclass.
637 
638     \value Version 1
639 
640     The version is used by QStyleOption subclasses to implement
641     extensions without breaking compatibility. If you use
642     qstyleoption_cast(), you normally do not need to check it.
643 
644     \sa StyleOptionType
645 */
646 
647 /*!
648     \variable QStyleOptionGroupBox::lineWidth
649     \brief the line width for drawing the panel
650 
651     The value of this variable is, currently, always 1.
652 
653     \sa QFrame::lineWidth
654 */
655 
656 /*!
657     \variable QStyleOptionGroupBox::midLineWidth
658     \brief the mid-line width for drawing the panel
659 
660     The mid-line width is usually used when drawing sunken or raised
661     group box frames. The value of this variable is, currently, always 0.
662 
663     \sa QFrame::midLineWidth
664 */
665 
666 /*!
667     \variable QStyleOptionGroupBox::text
668     \brief the text of the group box
669 
670     The default value is an empty string.
671 
672     \sa QGroupBox::title
673 */
674 
675 /*!
676     \variable QStyleOptionGroupBox::textAlignment
677     \brief the alignment of the group box title
678 
679     The default value is Qt::AlignLeft.
680 
681     \sa QGroupBox::alignment
682 */
683 
684 /*!
685     \variable QStyleOptionGroupBox::features
686     \brief the features of the group box frame
687 
688     The frame is flat by default.
689 
690     \sa QStyleOptionFrame::FrameFeature
691 */
692 
693 /*!
694     \variable QStyleOptionGroupBox::textColor
695     \brief the color of the group box title
696 
697     The default value is an invalid color with the RGB value (0, 0,
698     0). An invalid color is a color that is not properly set up for
699     the underlying window system.
700 */
701 
702 /*!
703     Constructs a QStyleOptionGroupBox, initializing the members
704     variables to their default values.
705 */
QStyleOptionGroupBox()706 QStyleOptionGroupBox::QStyleOptionGroupBox()
707     : QStyleOptionComplex(Version, Type), features(QStyleOptionFrame::None),
708       textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0)
709 {
710 }
711 
712 /*!
713     \fn QStyleOptionGroupBox::QStyleOptionGroupBox(const QStyleOptionGroupBox &other)
714 
715     Constructs a copy of the \a other style option.
716 */
717 
718 /*!
719     \internal
720 */
QStyleOptionGroupBox(int version)721 QStyleOptionGroupBox::QStyleOptionGroupBox(int version)
722     : QStyleOptionComplex(version, Type), features(QStyleOptionFrame::None),
723       textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0)
724 {
725 }
726 
727 /*!
728     \class QStyleOptionHeader
729     \brief The QStyleOptionHeader class is used to describe the
730     parameters for drawing a header.
731 
732     \inmodule QtWidgets
733 
734     QStyleOptionHeader contains all the information that QStyle
735     functions need to draw the item views' header pane, header sort
736     arrow, and header label.
737 
738     For performance reasons, the access to the member variables is
739     direct (i.e., using the \c . or \c -> operator). This low-level feel
740     makes the structures straightforward to use and emphasizes that
741     these are simply parameters used by the style functions.
742 
743     For an example demonstrating how style options can be used, see
744     the \l {widgets/styles}{Styles} example.
745 
746     \sa QStyleOption
747 */
748 
749 /*!
750     Constructs a QStyleOptionHeader, initializing the members
751     variables to their default values.
752 */
753 
QStyleOptionHeader()754 QStyleOptionHeader::QStyleOptionHeader()
755     : QStyleOption(QStyleOptionHeader::Version, SO_Header),
756       section(0), textAlignment(Qt::AlignLeft), iconAlignment(Qt::AlignLeft),
757       position(QStyleOptionHeader::Beginning),
758       selectedPosition(QStyleOptionHeader::NotAdjacent), sortIndicator(None),
759       orientation(Qt::Horizontal)
760 {
761 }
762 
763 /*!
764     \internal
765 */
QStyleOptionHeader(int version)766 QStyleOptionHeader::QStyleOptionHeader(int version)
767     : QStyleOption(version, SO_Header),
768       section(0), textAlignment(Qt::AlignLeft), iconAlignment(Qt::AlignLeft),
769       position(QStyleOptionHeader::Beginning),
770       selectedPosition(QStyleOptionHeader::NotAdjacent), sortIndicator(None),
771       orientation(Qt::Horizontal)
772 {
773 }
774 
775 /*!
776     \variable QStyleOptionHeader::orientation
777     \brief the header's orientation (horizontal or vertical)
778 
779     The default orientation is Qt::Horizontal
780 */
781 
782 /*!
783     \fn QStyleOptionHeader::QStyleOptionHeader(const QStyleOptionHeader &other)
784 
785     Constructs a copy of the \a other style option.
786 */
787 
788 /*!
789     \enum QStyleOptionHeader::StyleOptionType
790 
791     This enum is used to hold information about the type of the style option, and
792     is defined for each QStyleOption subclass.
793 
794     \value Type The type of style option provided (\l{SO_Header} for this class).
795 
796     The type is used internally by QStyleOption, its subclasses, and
797     qstyleoption_cast() to determine the type of style option. In
798     general you do not need to worry about this unless you want to
799     create your own QStyleOption subclass and your own styles.
800 
801     \sa StyleOptionVersion
802 */
803 
804 /*!
805     \enum QStyleOptionHeader::StyleOptionVersion
806 
807     This enum is used to hold information about the version of the style option, and
808     is defined for each QStyleOption subclass.
809 
810     \value Version 1
811 
812     The version is used by QStyleOption subclasses to implement
813     extensions without breaking compatibility. If you use
814     qstyleoption_cast(), you normally do not need to check it.
815 
816     \sa StyleOptionType
817 */
818 
819 /*!
820     \variable QStyleOptionHeader::section
821     \brief which section of the header is being painted
822 
823     The default value is 0.
824 */
825 
826 /*!
827     \variable QStyleOptionHeader::text
828     \brief the text of the header
829 
830     The default value is an empty string.
831 */
832 
833 /*!
834     \variable QStyleOptionHeader::textAlignment
835     \brief the alignment flags for the text of the header
836 
837     The default value is Qt::AlignLeft.
838 */
839 
840 /*!
841     \variable QStyleOptionHeader::icon
842     \brief the icon of the header
843 
844     The default value is an empty icon, i.e. an icon with neither a
845     pixmap nor a filename.
846 */
847 
848 /*!
849     \variable QStyleOptionHeader::iconAlignment
850     \brief the alignment flags for the icon of the header
851 
852     The default value is Qt::AlignLeft.
853 */
854 
855 /*!
856     \variable QStyleOptionHeader::position
857     \brief the section's position in relation to the other sections
858 
859     The default value is QStyleOptionHeader::Beginning.
860 */
861 
862 /*!
863     \variable QStyleOptionHeader::selectedPosition
864     \brief the section's position in relation to the selected section
865 
866     The default value is QStyleOptionHeader::NotAdjacent
867 */
868 
869 /*!
870     \variable QStyleOptionHeader::sortIndicator
871     \brief the direction the sort indicator should be drawn
872 
873     The default value is QStyleOptionHeader::None.
874 */
875 
876 /*!
877     \enum QStyleOptionHeader::SectionPosition
878 
879     This enum lets you know where the section's position is in relation to the other sections.
880 
881     \value Beginning At the beginining of the header
882     \value Middle In the middle of the header
883     \value End At the end of the header
884     \value OnlyOneSection Only one header section
885 
886     \sa position
887 */
888 
889 /*!
890     \enum QStyleOptionHeader::SelectedPosition
891 
892     This enum lets you know where the section's position is in relation to the selected section.
893 
894     \value NotAdjacent Not adjacent to the selected section
895     \value NextIsSelected The next section is selected
896     \value PreviousIsSelected The previous section is selected
897     \value NextAndPreviousAreSelected Both the next and previous section are selected
898 
899     \sa selectedPosition
900 */
901 
902 /*!
903     \enum QStyleOptionHeader::SortIndicator
904 
905     Indicates which direction the sort indicator should be drawn
906 
907     \value None No sort indicator is needed
908     \value SortUp Draw an up indicator
909     \value SortDown Draw a down indicator
910 
911     \sa sortIndicator
912 */
913 
914 /*!
915     \class QStyleOptionButton
916     \brief The QStyleOptionButton class is used to describe the
917     parameters for drawing buttons.
918 
919     \inmodule QtWidgets
920 
921     QStyleOptionButton contains all the information that QStyle
922     functions need to draw graphical elements like QPushButton,
923     QCheckBox, and QRadioButton.
924 
925     For performance reasons, the access to the member variables is
926     direct (i.e., using the \c . or \c -> operator). This low-level feel
927     makes the structures straightforward to use and emphasizes that
928     these are simply parameters used by the style functions.
929 
930     For an example demonstrating how style options can be used, see
931     the \l {widgets/styles}{Styles} example.
932 
933     \sa QStyleOption, QStyleOptionToolButton
934 */
935 
936 /*!
937     \enum QStyleOptionButton::ButtonFeature
938 
939     This enum describes the different types of features a push button can have.
940 
941     \value None Indicates a normal push button.
942     \value Flat Indicates a flat push button.
943     \value HasMenu Indicates that the button has a drop down menu.
944     \value DefaultButton Indicates that the button is a default button.
945     \value AutoDefaultButton Indicates that the button is an auto default button.
946     \value CommandLinkButton Indicates that the button is a Windows Vista type command link.
947 
948     \sa features
949 */
950 
951 /*!
952     Constructs a QStyleOptionButton, initializing the members
953     variables to their default values.
954 */
955 
QStyleOptionButton()956 QStyleOptionButton::QStyleOptionButton()
957     : QStyleOption(QStyleOptionButton::Version, SO_Button), features(None)
958 {
959 }
960 
961 /*!
962     \internal
963 */
QStyleOptionButton(int version)964 QStyleOptionButton::QStyleOptionButton(int version)
965     : QStyleOption(version, SO_Button), features(None)
966 {
967 }
968 
969 /*!
970     \fn QStyleOptionButton::QStyleOptionButton(const QStyleOptionButton &other)
971 
972     Constructs a copy of the \a other style option.
973 */
974 
975 /*!
976     \enum QStyleOptionButton::StyleOptionType
977 
978     This enum is used to hold information about the type of the style option, and
979     is defined for each QStyleOption subclass.
980 
981     \value Type The type of style option provided (\l{SO_Button} for this class).
982 
983     The type is used internally by QStyleOption, its subclasses, and
984     qstyleoption_cast() to determine the type of style option. In
985     general you do not need to worry about this unless you want to
986     create your own QStyleOption subclass and your own styles.
987 
988     \sa StyleOptionVersion
989 */
990 
991 /*!
992     \enum QStyleOptionButton::StyleOptionVersion
993 
994     This enum is used to hold information about the version of the style option, and
995     is defined for each QStyleOption subclass.
996 
997     \value Version 1
998 
999     The version is used by QStyleOption subclasses to implement
1000     extensions without breaking compatibility. If you use
1001     qstyleoption_cast(), you normally do not need to check it.
1002 
1003     \sa StyleOptionType
1004 */
1005 
1006 /*!
1007     \variable QStyleOptionButton::features
1008     \brief a bitwise OR of the features that describe this button
1009 
1010     \sa ButtonFeature
1011 */
1012 
1013 /*!
1014     \variable QStyleOptionButton::text
1015     \brief the text of the button
1016 
1017     The default value is an empty string.
1018 */
1019 
1020 /*!
1021     \variable QStyleOptionButton::icon
1022     \brief the icon of the button
1023 
1024     The default value is an empty icon, i.e. an icon with neither a
1025     pixmap nor a filename.
1026 
1027     \sa iconSize
1028 */
1029 
1030 /*!
1031     \variable QStyleOptionButton::iconSize
1032     \brief the size of the icon for the button
1033 
1034     The default value is QSize(-1, -1), i.e. an invalid size.
1035 */
1036 
1037 
1038 #if QT_CONFIG(toolbar)
1039 /*!
1040     \class QStyleOptionToolBar
1041     \brief The QStyleOptionToolBar class is used to describe the
1042     parameters for drawing a toolbar.
1043 
1044     \since 4.1
1045     \inmodule QtWidgets
1046 
1047     QStyleOptionToolBar contains all the information that QStyle
1048     functions need to draw QToolBar.
1049 
1050     For performance reasons, the access to the member variables is
1051     direct (i.e., using the \c . or \c -> operator). This low-level feel
1052     makes the structures straightforward to use and emphasizes that
1053     these are simply parameters used by the style functions.
1054 
1055     The QStyleOptionToolBar class holds the lineWidth and the
1056     midLineWidth for drawing the widget. It also stores information
1057     about which \l {toolBarArea}{area} the toolbar should be located
1058     in, whether it is movable or not, which position the toolbar line
1059     should have (positionOfLine), and the toolbar's position within
1060     the line (positionWithinLine).
1061 
1062     In addition, the class provides a couple of enums: The
1063     ToolBarFeature enum is used to describe whether a toolbar is
1064     movable or not, and the ToolBarPosition enum is used to describe
1065     the position of a toolbar line, as well as the toolbar's position
1066     within the line.
1067 
1068     For an example demonstrating how style options can be used, see
1069     the \l {widgets/styles}{Styles} example.
1070 
1071     \sa QStyleOption
1072 */
1073 
1074 /*!
1075     Constructs a QStyleOptionToolBar, initializing the members
1076     variables to their default values.
1077 */
1078 
QStyleOptionToolBar()1079 QStyleOptionToolBar::QStyleOptionToolBar()
1080     : QStyleOption(Version, SO_ToolBar), positionOfLine(OnlyOne), positionWithinLine(OnlyOne),
1081       toolBarArea(Qt::TopToolBarArea), features(None), lineWidth(0), midLineWidth(0)
1082 {
1083 }
1084 
1085 /*!
1086     \fn QStyleOptionToolBar::QStyleOptionToolBar(const QStyleOptionToolBar &other)
1087 
1088     Constructs a copy of the \a other style option.
1089 */
1090 
1091 /*!
1092     \internal
1093 */
QStyleOptionToolBar(int version)1094 QStyleOptionToolBar::QStyleOptionToolBar(int version)
1095 : QStyleOption(version, SO_ToolBar), positionOfLine(OnlyOne), positionWithinLine(OnlyOne),
1096   toolBarArea(Qt::TopToolBarArea), features(None), lineWidth(0), midLineWidth(0)
1097 {
1098 
1099 }
1100 
1101 /*!
1102     \enum QStyleOptionToolBar::ToolBarPosition
1103 
1104     \image qstyleoptiontoolbar-position.png
1105 
1106     This enum is used to describe the position of a toolbar line, as
1107     well as the toolbar's position within the line.
1108 
1109     The order of the positions within a line starts at the top of a
1110     vertical line, and from the left within a horizontal line. The
1111     order of the positions for the lines is always from the
1112     parent widget's boundary edges.
1113 
1114     \value Beginning The toolbar is located at the beginning of the line,
1115            or the toolbar line is the first of several lines. There can
1116            only be one toolbar (and only one line) with this position.
1117     \value Middle The toolbar is located in the middle of the line,
1118            or the toolbar line is in the middle of several lines. There can
1119            several toolbars (and lines) with this position.
1120     \value End The toolbar is located at the end of the line,
1121            or the toolbar line is the last of several lines. There can
1122            only be one toolbar (and only one line) with this position.
1123     \value OnlyOne There is only one toolbar or line. This is the default value
1124            of the positionOfLine and positionWithinLine variables.
1125 
1126     \sa positionWithinLine, positionOfLine
1127 */
1128 
1129 /*!
1130     \enum QStyleOptionToolBar::ToolBarFeature
1131 
1132     This enum is used to describe whether a toolbar is movable or not.
1133 
1134     \value None The toolbar cannot be moved. The default value.
1135     \value Movable The toolbar is movable, and a handle will appear when
1136            holding the cursor over the toolbar's boundary.
1137 
1138     \sa features, QToolBar::isMovable()
1139 */
1140 
1141 /*!
1142     \variable QStyleOptionToolBar::positionOfLine
1143 
1144     This variable holds the position of the toolbar line.
1145 
1146     The default value is QStyleOptionToolBar::OnlyOne.
1147 */
1148 
1149 /*!
1150     \variable QStyleOptionToolBar::positionWithinLine
1151 
1152     This variable holds the position of the toolbar within a line.
1153 
1154     The default value is QStyleOptionToolBar::OnlyOne.
1155 */
1156 
1157 /*!
1158     \variable QStyleOptionToolBar::toolBarArea
1159 
1160     This variable holds the location for drawing the toolbar.
1161 
1162     The default value is Qt::TopToolBarArea.
1163 
1164     \sa Qt::ToolBarArea
1165 */
1166 
1167 /*!
1168     \variable QStyleOptionToolBar::features
1169 
1170     This variable holds whether the toolbar is movable or not.
1171 
1172     The default value is \l None.
1173 */
1174 
1175 /*!
1176     \variable QStyleOptionToolBar::lineWidth
1177 
1178     This variable holds the line width for drawing the toolbar.
1179 
1180     The default value is 0.
1181 */
1182 
1183 /*!
1184     \variable QStyleOptionToolBar::midLineWidth
1185 
1186     This variable holds the mid-line width for drawing the toolbar.
1187 
1188     The default value is 0.
1189 */
1190 
1191 /*!
1192     \enum QStyleOptionToolBar::StyleOptionType
1193 
1194     This enum is used to hold information about the type of the style
1195     option, and is defined for each QStyleOption subclass.
1196 
1197     \value Type The type of style option provided (\l{SO_ToolBar} for
1198     this class).
1199 
1200     The type is used internally by QStyleOption, its subclasses, and
1201     qstyleoption_cast() to determine the type of style option. In
1202     general you do not need to worry about this unless you want to
1203     create your own QStyleOption subclass and your own styles.
1204 
1205     \sa StyleOptionVersion
1206 */
1207 
1208 /*!
1209     \enum QStyleOptionToolBar::StyleOptionVersion
1210 
1211     This enum is used to hold information about the version of the
1212     style option, and is defined for each QStyleOption subclass.
1213 
1214     \value Version 1
1215 
1216     The version is used by QStyleOption subclasses to implement
1217     extensions without breaking compatibility. If you use
1218     qstyleoption_cast(), you normally do not need to check it.
1219 
1220     \sa StyleOptionType
1221 */
1222 
1223 #endif
1224 
1225 #if QT_CONFIG(tabbar)
1226 /*!
1227     \class QStyleOptionTab
1228     \brief The QStyleOptionTab class is used to describe the
1229     parameters for drawing a tab bar.
1230 
1231     \inmodule QtWidgets
1232 
1233     The QStyleOptionTab class is used for drawing several built-in Qt
1234     widgets including \l QTabBar and the panel for \l QTabWidget.
1235 
1236     An instance of the QStyleOptionTab class has
1237     \l{QStyleOption::type} {type} \l SO_Tab and
1238     \l{QStyleOption::version} {version} 3. The type is used internally
1239     by QStyleOption, its subclasses, and qstyleoption_cast() to
1240     determine the type of style option. In general you do not need to
1241     worry about this unless you want to create your own QStyleOption
1242     subclass and your own styles. The version is used by QStyleOption
1243     subclasses to implement extensions without breaking
1244     compatibility. If you use qstyleoption_cast(), you normally do not
1245     need to check it.
1246 
1247     For an example demonstrating how style options can be used, see
1248     the \l {widgets/styles}{Styles} example.
1249 
1250     \sa QStyleOption
1251 */
1252 
1253 /*!
1254     \typedef QStyleOptionTabV2
1255     \relates QStyleOptionTab
1256     \obsolete
1257 
1258     Synonym for QStyleOptionTab.
1259 */
1260 
1261 /*!
1262     \typedef QStyleOptionTabV3
1263     \relates QStyleOptionTab
1264     \obsolete
1265 
1266     Synonym for QStyleOptionTab.
1267 */
1268 
1269 /*!
1270     Constructs a QStyleOptionTab object, initializing the members
1271     variables to their default values.
1272 */
1273 
QStyleOptionTab()1274 QStyleOptionTab::QStyleOptionTab()
1275     : QStyleOption(QStyleOptionTab::Version, SO_Tab),
1276       shape(QTabBar::RoundedNorth),
1277       row(0),
1278       position(Beginning),
1279       selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
1280       documentMode(false),
1281       features(QStyleOptionTab::None)
1282 {
1283 }
1284 
1285 /*!
1286     \internal
1287 */
QStyleOptionTab(int version)1288 QStyleOptionTab::QStyleOptionTab(int version)
1289     : QStyleOption(version, SO_Tab),
1290       shape(QTabBar::RoundedNorth),
1291       row(0),
1292       position(Beginning),
1293       selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
1294       documentMode(false),
1295       features(QStyleOptionTab::None)
1296 {
1297 }
1298 
1299 /*!
1300     \fn QStyleOptionTab::QStyleOptionTab(const QStyleOptionTab &other)
1301 
1302     Constructs a copy of the \a other style option.
1303 */
1304 
1305 /*!
1306     \enum QStyleOptionTab::StyleOptionType
1307 
1308     This enum is used to hold information about the type of the style option, and
1309     is defined for each QStyleOption subclass.
1310 
1311     \value Type The type of style option provided (\l{SO_Tab} for this class).
1312 
1313     The type is used internally by QStyleOption, its subclasses, and
1314     qstyleoption_cast() to determine the type of style option. In
1315     general you do not need to worry about this unless you want to
1316     create your own QStyleOption subclass and your own styles.
1317 
1318     \sa StyleOptionVersion
1319 */
1320 
1321 /*!
1322     \enum QStyleOptionTab::StyleOptionVersion
1323 
1324     This enum is used to hold information about the version of the style option, and
1325     is defined for each QStyleOption subclass.
1326 
1327     \value Version 3
1328 
1329     The version is used by QStyleOption subclasses to implement
1330     extensions without breaking compatibility. If you use
1331     qstyleoption_cast(), you normally do not need to check it.
1332 
1333     \sa StyleOptionType
1334 */
1335 
1336 /*!
1337     \enum QStyleOptionTab::TabPosition
1338 
1339     This enum describes the position of the tab.
1340 
1341     \value Beginning The tab is the first tab in the tab bar.
1342     \value Middle The tab is neither the first nor the last tab in the tab bar.
1343     \value End The tab is the last tab in the tab bar.
1344     \value OnlyOneTab The tab is both the first and the last tab in the tab bar.
1345 
1346     \sa position
1347 */
1348 
1349 /*!
1350     \enum QStyleOptionTab::CornerWidget
1351 
1352     These flags indicate the corner widgets in a tab.
1353 
1354     \value NoCornerWidgets  There are no corner widgets
1355     \value LeftCornerWidget  Left corner widget
1356     \value RightCornerWidget Right corner widget
1357 
1358     \sa cornerWidgets
1359 */
1360 
1361 /*! \enum QStyleOptionTab::SelectedPosition
1362 
1363     This enum describes the position of the selected tab. Some styles
1364     need to draw a tab differently depending on whether or not it is
1365     adjacent to the selected tab.
1366 
1367     \value NotAdjacent The tab is not adjacent to a selected tab (or is the selected tab).
1368     \value NextIsSelected The next tab (typically the tab on the right) is selected.
1369     \value PreviousIsSelected The previous tab (typically the tab on the left) is selected.
1370 
1371     \sa selectedPosition
1372 */
1373 
1374 /*!
1375     \variable QStyleOptionTab::selectedPosition
1376     \brief the position of the selected tab in relation to this tab
1377 
1378     The default value is NotAdjacent, i.e. the tab is not adjacent to
1379     a selected tab nor is it the selected tab.
1380 */
1381 
1382 /*!
1383     \variable QStyleOptionTab::cornerWidgets
1384     \brief an OR combination of CornerWidget values indicating the
1385     corner widgets of the tab bar
1386 
1387     The default value is NoCornerWidgets.
1388 
1389     \sa CornerWidget
1390 */
1391 
1392 
1393 /*!
1394     \variable QStyleOptionTab::shape
1395     \brief the tab shape used to draw the tab; by default
1396     QTabBar::RoundedNorth
1397 
1398     \sa QTabBar::Shape
1399 */
1400 
1401 /*!
1402     \variable QStyleOptionTab::text
1403     \brief the text of the tab
1404 
1405     The default value is an empty string.
1406 */
1407 
1408 /*!
1409     \variable QStyleOptionTab::icon
1410     \brief the icon for the tab
1411 
1412     The default value is an empty icon, i.e. an icon with neither a
1413     pixmap nor a filename.
1414 */
1415 
1416 /*!
1417     \variable QStyleOptionTab::row
1418     \brief which row the tab is currently in
1419 
1420     The default value is 0, indicating the front row.  Currently this
1421     property can only be 0.
1422 */
1423 
1424 /*!
1425     \variable QStyleOptionTab::position
1426     \brief the position of the tab in the tab bar
1427 
1428     The default value is \l Beginning, i.e. the tab is the first tab
1429     in the tab bar.
1430 */
1431 /*!
1432     \variable QStyleOptionTab::iconSize
1433     \brief the size for the icons
1434 
1435     The default value is QSize(-1, -1), i.e. an invalid size; use
1436     QStyle::pixelMetric() to find the default icon size for tab bars.
1437 
1438     \sa QTabBar::iconSize()
1439 */
1440 
1441 /*!
1442     \variable QStyleOptionTab::documentMode
1443     \brief whether the tabbar is in document mode.
1444 
1445     The default value is false;
1446 */
1447 
1448 /*!
1449     \enum QStyleOptionTab::TabFeature
1450 
1451     Describes the various features that a tab button can have.
1452 
1453     \value None A normal tab button.
1454     \value HasFrame The tab button is positioned on a tab frame
1455 
1456     \sa QStyleOptionToolBar::features
1457 */
1458 
1459 /*!
1460     \variable QStyleOptionTab::leftButtonSize
1461     \brief the size for the left widget on the tab.
1462 
1463     The default value is QSize(-1, -1), i.e. an invalid size;
1464 */
1465 
1466 /*!
1467     \variable QStyleOptionTab::rightButtonSize
1468     \brief the size for the right widget on the tab.
1469 
1470     The default value is QSize(-1, -1), i.e. an invalid size;
1471 */
1472 
1473 /*!
1474     Constructs a QStyleOptionTabV4 object, initializing the members
1475     variables to their default values.
1476  */
1477 
QStyleOptionTabV4()1478 QStyleOptionTabV4::QStyleOptionTabV4() : QStyleOptionTab(QStyleOptionTabV4::Version)
1479 {
1480 }
1481 
1482 /*!
1483     \variable QStyleOptionTabV4::tabIndex
1484     \brief the index for the tab being represented.
1485 
1486     The default value is -1, i.e. a tab not on a tabbar;
1487  */
1488 
1489 #endif // QT_CONFIG(tabbar)
1490 
1491 /*!
1492     \class QStyleOptionProgressBar
1493     \brief The QStyleOptionProgressBar class is used to describe the
1494     parameters necessary for drawing a progress bar.
1495 
1496     \inmodule QtWidgets
1497 
1498     An instance of the QStyleOptionProgressBar class has type
1499     SO_ProgressBar and version 2.
1500 
1501     The type is used internally by QStyleOption, its subclasses, and
1502     qstyleoption_cast() to determine the type of style option. In
1503     general you do not need to worry about this unless you want to
1504     create your own QStyleOption subclass and your own styles.  The
1505     version is used by QStyleOption subclasses to implement extensions
1506     without breaking compatibility. If you use qstyleoption_cast(),
1507     you normally do not need to check it.
1508 
1509     For an example demonstrating how style options can be used, see
1510     the \l {widgets/styles}{Styles} example.
1511 
1512     \sa QStyleOption
1513 */
1514 
1515 /*!
1516     \typedef QStyleOptionProgressBarV2
1517     \relates QStyleOptionProgressBar
1518     \obsolete
1519 
1520     Synonym for QStyleOptionProgressBar.
1521 */
1522 
1523 /*!
1524     Constructs a QStyleOptionProgressBar, initializing the members
1525     variables to their default values.
1526 */
1527 
QStyleOptionProgressBar()1528 QStyleOptionProgressBar::QStyleOptionProgressBar()
1529     : QStyleOption(QStyleOptionProgressBar::Version, SO_ProgressBar),
1530       minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false),
1531       orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
1532 {
1533 }
1534 
1535 /*!
1536     \internal
1537 */
QStyleOptionProgressBar(int version)1538 QStyleOptionProgressBar::QStyleOptionProgressBar(int version)
1539     : QStyleOption(version, SO_ProgressBar),
1540       minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false),
1541       orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
1542 {
1543 }
1544 
1545 /*!
1546     \fn QStyleOptionProgressBar::QStyleOptionProgressBar(const QStyleOptionProgressBar &other)
1547 
1548     Constructs a copy of the \a other style option.
1549 */
1550 
1551 /*!
1552     \enum QStyleOptionProgressBar::StyleOptionType
1553 
1554     This enum is used to hold information about the type of the style option, and
1555     is defined for each QStyleOption subclass.
1556 
1557     \value Type The type of style option provided (\l{SO_ProgressBar} for this class).
1558 
1559     The type is used internally by QStyleOption, its subclasses, and
1560     qstyleoption_cast() to determine the type of style option. In
1561     general you do not need to worry about this unless you want to
1562     create your own QStyleOption subclass and your own styles.
1563 
1564     \sa StyleOptionVersion
1565 */
1566 
1567 /*!
1568     \enum QStyleOptionProgressBar::StyleOptionVersion
1569 
1570     This enum is used to hold information about the version of the style option, and
1571     is defined for each QStyleOption subclass.
1572 
1573     \value Version 2
1574 
1575     The version is used by QStyleOption subclasses to implement
1576     extensions without breaking compatibility. If you use
1577     qstyleoption_cast(), you normally do not need to check it.
1578 
1579     \sa StyleOptionType
1580 */
1581 
1582 /*!
1583     \variable QStyleOptionProgressBar::minimum
1584     \brief the minimum value for the progress bar
1585 
1586     This is the minimum value in the progress bar. The default value
1587     is 0.
1588 
1589     \sa QProgressBar::minimum
1590 */
1591 
1592 /*!
1593     \variable QStyleOptionProgressBar::maximum
1594     \brief the maximum value for the progress bar
1595 
1596     This is the maximum value in the progress bar. The default value
1597     is 0.
1598 
1599     \sa QProgressBar::maximum
1600 */
1601 
1602 /*!
1603     \variable QStyleOptionProgressBar::text
1604     \brief the text for the progress bar
1605 
1606     The progress bar text is usually just the progress expressed as a
1607     string.  An empty string indicates that the progress bar has not
1608     started yet. The default value is an empty string.
1609 
1610     \sa QProgressBar::text
1611 */
1612 
1613 /*!
1614     \variable QStyleOptionProgressBar::textVisible
1615     \brief a flag indicating whether or not text is visible
1616 
1617     If this flag is true then the text is visible. Otherwise, the text
1618     is not visible. The default value is false.
1619 
1620     \sa QProgressBar::textVisible
1621 */
1622 
1623 
1624 /*!
1625     \variable QStyleOptionProgressBar::textAlignment
1626     \brief the text alignment for the text in the QProgressBar
1627 
1628     This can be used as a guide on where the text should be in the
1629     progress bar. The default value is Qt::AlignLeft.
1630 */
1631 
1632 /*!
1633     \variable QStyleOptionProgressBar::progress
1634     \brief the current progress for the progress bar
1635 
1636     The current progress. A value of QStyleOptionProgressBar::minimum
1637     - 1 indicates that the progress hasn't started yet. The default
1638     value is 0.
1639 
1640     \sa QProgressBar::value
1641 */
1642 
1643 /*!
1644     \variable QStyleOptionProgressBar::orientation
1645     \brief the progress bar's orientation (horizontal or vertical);
1646     the default orentation is Qt::Horizontal
1647 
1648     \deprecated
1649     Use the QStyle::State_Horizontal flag instead (in the QStyleOption::state member).
1650 
1651     \sa QProgressBar::orientation
1652 */
1653 
1654 /*!
1655     \variable QStyleOptionProgressBar::invertedAppearance
1656     \brief whether the progress bar's appearance is inverted
1657 
1658     The default value is false.
1659 
1660     \sa QProgressBar::invertedAppearance
1661 */
1662 
1663 /*!
1664     \variable QStyleOptionProgressBar::bottomToTop
1665     \brief whether the text reads from bottom to top when the progress
1666     bar is vertical
1667 
1668     The default value is false.
1669 
1670     \sa QProgressBar::textDirection
1671 */
1672 
1673 /*!
1674     \class QStyleOptionMenuItem
1675     \brief The QStyleOptionMenuItem class is used to describe the
1676     parameter necessary for drawing a menu item.
1677 
1678     \inmodule QtWidgets
1679 
1680     QStyleOptionMenuItem contains all the information that QStyle
1681     functions need to draw the menu items from \l QMenu. It is also
1682     used for drawing other menu-related widgets.
1683 
1684     For performance reasons, the access to the member variables is
1685     direct (i.e., using the \c . or \c -> operator). This low-level feel
1686     makes the structures straightforward to use and emphasizes that
1687     these are simply parameters used by the style functions.
1688 
1689     For an example demonstrating how style options can be used, see
1690     the \l {widgets/styles}{Styles} example.
1691 
1692     \sa QStyleOption
1693 */
1694 
1695 /*!
1696     Constructs a QStyleOptionMenuItem, initializing the members
1697     variables to their default values.
1698 */
1699 
QStyleOptionMenuItem()1700 QStyleOptionMenuItem::QStyleOptionMenuItem()
1701     : QStyleOption(QStyleOptionMenuItem::Version, SO_MenuItem), menuItemType(Normal),
1702       checkType(NotCheckable), checked(false), menuHasCheckableItems(true), maxIconWidth(0), tabWidth(0)
1703 {
1704 }
1705 
1706 /*!
1707     \internal
1708 */
QStyleOptionMenuItem(int version)1709 QStyleOptionMenuItem::QStyleOptionMenuItem(int version)
1710     : QStyleOption(version, SO_MenuItem), menuItemType(Normal),
1711       checkType(NotCheckable), checked(false), menuHasCheckableItems(true), maxIconWidth(0), tabWidth(0)
1712 {
1713 }
1714 
1715 /*!
1716     \fn QStyleOptionMenuItem::QStyleOptionMenuItem(const QStyleOptionMenuItem &other)
1717 
1718     Constructs a copy of the \a other style option.
1719 */
1720 
1721 /*!
1722     \enum QStyleOptionMenuItem::StyleOptionType
1723 
1724     This enum is used to hold information about the type of the style option, and
1725     is defined for each QStyleOption subclass.
1726 
1727     \value Type The type of style option provided (\l{SO_MenuItem} for this class).
1728 
1729     The type is used internally by QStyleOption, its subclasses, and
1730     qstyleoption_cast() to determine the type of style option. In
1731     general you do not need to worry about this unless you want to
1732     create your own QStyleOption subclass and your own styles.
1733 
1734     \sa StyleOptionVersion
1735 */
1736 
1737 /*!
1738     \enum QStyleOptionMenuItem::StyleOptionVersion
1739 
1740     This enum is used to hold information about the version of the style option, and
1741     is defined for each QStyleOption subclass.
1742 
1743     \value Version 1
1744 
1745     The version is used by QStyleOption subclasses to implement
1746     extensions without breaking compatibility. If you use
1747     qstyleoption_cast(), you normally do not need to check it.
1748 
1749     \sa StyleOptionType
1750 */
1751 
1752 /*!
1753     \enum QStyleOptionMenuItem::MenuItemType
1754 
1755     This enum indicates the type of menu item that the structure describes.
1756 
1757     \value Normal A normal menu item.
1758     \value DefaultItem A menu item that is the default action as specified with \l QMenu::defaultAction().
1759     \value Separator A menu separator.
1760     \value SubMenu Indicates the menu item points to a sub-menu.
1761     \value Scroller A popup menu scroller (currently only used on \macos).
1762     \value TearOff A tear-off handle for the menu.
1763     \value Margin The margin of the menu.
1764     \value EmptyArea The empty area of the menu.
1765 
1766     \sa menuItemType
1767 */
1768 
1769 /*!
1770     \enum QStyleOptionMenuItem::CheckType
1771 
1772     This enum is used to indicate whether or not a check mark should be
1773     drawn for the item, or even if it should be drawn at all.
1774 
1775     \value NotCheckable The item is not checkable.
1776     \value Exclusive The item is an exclusive check item (like a radio button).
1777     \value NonExclusive The item is a non-exclusive check item (like a check box).
1778 
1779     \sa checkType, QAction::checkable, QAction::checked, QActionGroup::exclusionPolicy
1780 */
1781 
1782 /*!
1783     \variable QStyleOptionMenuItem::menuItemType
1784     \brief the type of menu item
1785 
1786     The default value is \l Normal.
1787 
1788     \sa MenuItemType
1789 */
1790 
1791 /*!
1792     \variable QStyleOptionMenuItem::checkType
1793     \brief the type of checkmark of the menu item
1794 
1795     The default value is \l NotCheckable.
1796 
1797     \sa CheckType
1798 */
1799 
1800 /*!
1801     \variable QStyleOptionMenuItem::checked
1802     \brief whether the menu item is checked or not
1803 
1804     The default value is false.
1805 */
1806 
1807 /*!
1808     \variable QStyleOptionMenuItem::menuHasCheckableItems
1809     \brief whether the menu as a whole has checkable items or not
1810 
1811     The default value is true.
1812 
1813     If this option is set to false, then the menu has no checkable
1814     items. This makes it possible for GUI styles to save some
1815     horizontal space that would normally be used for the check column.
1816 */
1817 
1818 /*!
1819     \variable QStyleOptionMenuItem::menuRect
1820     \brief the rectangle for the entire menu
1821 
1822     The default value is a null rectangle, i.e. a rectangle with both
1823     the width and the height set to 0.
1824 */
1825 
1826 /*!
1827     \variable QStyleOptionMenuItem::text
1828     \brief the text for the menu item
1829 
1830     Note that the text format is something like this "Menu
1831     text\b{\\t}Shortcut".
1832 
1833     If the menu item doesn't have a shortcut, it will just contain the
1834     menu item's text. The default value is an empty string.
1835 */
1836 
1837 /*!
1838     \variable QStyleOptionMenuItem::icon
1839     \brief the icon for the menu item
1840 
1841     The default value is an empty icon, i.e. an icon with neither a
1842     pixmap nor a filename.
1843 */
1844 
1845 /*!
1846     \variable QStyleOptionMenuItem::maxIconWidth
1847     \brief the maximum icon width for the icon in the menu item
1848 
1849     This can be used for drawing the icon into the correct place or
1850     properly aligning items. The variable must be set regardless of
1851     whether or not the menu item has an icon. The default value is 0.
1852 */
1853 
1854 /*!
1855     \variable QStyleOptionMenuItem::tabWidth
1856     \brief the reserved width for the menu item's shortcut
1857 
1858     QMenu sets it to the width occupied by the widest shortcut among
1859     all visible items within the menu.
1860 
1861     The default value is 0.
1862 */
1863 
1864 
1865 /*!
1866     \variable QStyleOptionMenuItem::font
1867     \brief the font used for the menu item text
1868 
1869     This is the font that should be used for drawing the menu text
1870     minus the shortcut. The shortcut is usually drawn using the
1871     painter's font. By default, the application's default font is
1872     used.
1873 */
1874 
1875 /*!
1876     \class QStyleOptionComplex
1877     \brief The QStyleOptionComplex class is used to hold parameters that are
1878     common to all complex controls.
1879 
1880     \inmodule QtWidgets
1881 
1882     This class is not used on its own. Instead it is used to derive
1883     other complex control options, for example QStyleOptionSlider and
1884     QStyleOptionSpinBox.
1885 
1886     For performance reasons, the access to the member variables is
1887     direct (i.e., using the \c . or \c -> operator).
1888 
1889     For an example demonstrating how style options can be used, see
1890     the \l {widgets/styles}{Styles} example.
1891 
1892     \sa QStyleOption
1893 */
1894 
1895 /*!
1896     Constructs a QStyleOptionComplex of the specified \a type and \a
1897     version, initializing the member variables to their default
1898     values. This constructor is usually called by subclasses.
1899 */
1900 
QStyleOptionComplex(int version,int type)1901 QStyleOptionComplex::QStyleOptionComplex(int version, int type)
1902     : QStyleOption(version, type), subControls(QStyle::SC_All), activeSubControls(QStyle::SC_None)
1903 {
1904 }
1905 
1906 /*!
1907     \fn QStyleOptionComplex::QStyleOptionComplex(const QStyleOptionComplex &other)
1908 
1909     Constructs a copy of the \a other style option.
1910 */
1911 
1912 /*!
1913     \enum QStyleOptionComplex::StyleOptionType
1914 
1915     This enum is used to hold information about the type of the style option, and
1916     is defined for each QStyleOption subclass.
1917 
1918     \value Type The type of style option provided (\l{SO_Complex} for this class).
1919 
1920     The type is used internally by QStyleOption, its subclasses, and
1921     qstyleoption_cast() to determine the type of style option. In
1922     general you do not need to worry about this unless you want to
1923     create your own QStyleOption subclass and your own styles.
1924 
1925     \sa StyleOptionVersion
1926 */
1927 
1928 /*!
1929     \enum QStyleOptionComplex::StyleOptionVersion
1930 
1931     This enum is used to hold information about the version of the style option, and
1932     is defined for each QStyleOption subclass.
1933 
1934     \value Version 1
1935 
1936     The version is used by QStyleOption subclasses to implement
1937     extensions without breaking compatibility. If you use
1938     qstyleoption_cast(), you normally do not need to check it.
1939 
1940     \sa StyleOptionType
1941 */
1942 
1943 /*!
1944     \variable QStyleOptionComplex::subControls
1945 
1946     This variable holds a bitwise OR of the \l{QStyle::SubControl}
1947     {sub-controls} to be drawn for the complex control.
1948 
1949     The default value is QStyle::SC_All.
1950 
1951     \sa QStyle::SubControl
1952 */
1953 
1954 /*!
1955     \variable QStyleOptionComplex::activeSubControls
1956 
1957     This variable holds a bitwise OR of the \l{QStyle::SubControl}
1958     {sub-controls} that are active for the complex control.
1959 
1960     The default value is QStyle::SC_None.
1961 
1962     \sa QStyle::SubControl
1963 */
1964 
1965 #if QT_CONFIG(slider)
1966 /*!
1967     \class QStyleOptionSlider
1968     \brief The QStyleOptionSlider class is used to describe the
1969     parameters needed for drawing a slider.
1970 
1971     \inmodule QtWidgets
1972 
1973     QStyleOptionSlider contains all the information that QStyle
1974     functions need to draw QSlider and QScrollBar.
1975 
1976     For performance reasons, the access to the member variables is
1977     direct (i.e., using the \c . or \c -> operator). This low-level feel
1978     makes the structures straightforward to use and emphasizes that
1979     these are simply parameters used by the style functions.
1980 
1981     For an example demonstrating how style options can be used, see
1982     the \l {widgets/styles}{Styles} example.
1983 
1984     \sa QStyleOptionComplex, QSlider, QScrollBar
1985 */
1986 
1987 /*!
1988     Constructs a QStyleOptionSlider, initializing the members
1989     variables to their default values.
1990 */
1991 
QStyleOptionSlider()1992 QStyleOptionSlider::QStyleOptionSlider()
1993     : QStyleOptionComplex(Version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0),
1994       tickPosition(QSlider::NoTicks), tickInterval(0), upsideDown(false),
1995       sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0),
1996       dialWrapping(false)
1997 {
1998 }
1999 
2000 /*!
2001     \internal
2002 */
QStyleOptionSlider(int version)2003 QStyleOptionSlider::QStyleOptionSlider(int version)
2004     : QStyleOptionComplex(version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0),
2005       tickPosition(QSlider::NoTicks), tickInterval(0), upsideDown(false),
2006       sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0),
2007       dialWrapping(false)
2008 {
2009 }
2010 
2011 /*!
2012     \fn QStyleOptionSlider::QStyleOptionSlider(const QStyleOptionSlider &other)
2013 
2014     Constructs a copy of the \a other style option.
2015 */
2016 
2017 /*!
2018     \enum QStyleOptionSlider::StyleOptionType
2019 
2020     This enum is used to hold information about the type of the style option, and
2021     is defined for each QStyleOption subclass.
2022 
2023     \value Type The type of style option provided (\l{SO_Slider} for this class).
2024 
2025     The type is used internally by QStyleOption, its subclasses, and
2026     qstyleoption_cast() to determine the type of style option. In
2027     general you do not need to worry about this unless you want to
2028     create your own QStyleOption subclass and your own styles.
2029 
2030     \sa StyleOptionVersion
2031 */
2032 
2033 /*!
2034     \enum QStyleOptionSlider::StyleOptionVersion
2035 
2036     This enum is used to hold information about the version of the style option, and
2037     is defined for each QStyleOption subclass.
2038 
2039     \value Version 1
2040 
2041     The version is used by QStyleOption subclasses to implement
2042     extensions without breaking compatibility. If you use
2043     qstyleoption_cast(), you normally do not need to check it.
2044 
2045     \sa StyleOptionType
2046 */
2047 
2048 /*!
2049     \variable QStyleOptionSlider::orientation
2050     \brief the slider's orientation (horizontal or vertical)
2051 
2052     The default orientation is Qt::Horizontal.
2053 
2054     \sa Qt::Orientation
2055 */
2056 
2057 /*!
2058     \variable QStyleOptionSlider::minimum
2059     \brief the minimum value for the slider
2060 
2061     The default value is 0.
2062 */
2063 
2064 /*!
2065     \variable QStyleOptionSlider::maximum
2066     \brief the maximum value for the slider
2067 
2068     The default value is 0.
2069 */
2070 
2071 /*!
2072     \variable QStyleOptionSlider::tickPosition
2073     \brief the position of the slider's tick marks, if any
2074 
2075     The default value is QSlider::NoTicks.
2076 
2077     \sa QSlider::TickPosition
2078 */
2079 
2080 /*!
2081     \variable QStyleOptionSlider::tickInterval
2082     \brief the interval that should be drawn between tick marks
2083 
2084     The default value is 0.
2085 */
2086 
2087 /*!
2088     \variable QStyleOptionSlider::notchTarget
2089     \brief the number of pixel between notches
2090 
2091     The default value is 0.0.
2092 
2093     \sa QDial::notchTarget()
2094 */
2095 
2096 /*!
2097     \variable QStyleOptionSlider::dialWrapping
2098     \brief whether the dial should wrap or not
2099 
2100     The default value is false, i.e. the dial is not wrapped.
2101 
2102     \sa QDial::wrapping()
2103 */
2104 
2105 /*!
2106     \variable QStyleOptionSlider::upsideDown
2107     \brief the slider control orientation
2108 
2109     Normally a slider increases as it moves up or to the right;
2110     upsideDown indicates that it should do the opposite (increase as
2111     it moves down or to the left).  The default value is false,
2112     i.e. the slider increases as it moves up or to the right.
2113 
2114     \sa QStyle::sliderPositionFromValue(),
2115     QStyle::sliderValueFromPosition(),
2116     QAbstractSlider::invertedAppearance
2117 */
2118 
2119 /*!
2120     \variable QStyleOptionSlider::sliderPosition
2121     \brief the position of the slider handle
2122 
2123     If the slider has active feedback (i.e.,
2124     QAbstractSlider::tracking is true), this value will be the same as
2125     \l sliderValue. Otherwise, it will have the current position of
2126     the handle. The default value is 0.
2127 
2128     \sa QAbstractSlider::tracking, sliderValue
2129 */
2130 
2131 /*!
2132     \variable QStyleOptionSlider::sliderValue
2133     \brief the value of the slider
2134 
2135     If the slider has active feedback (i.e.,
2136     QAbstractSlider::tracking is true), this value will be the same
2137     as \l sliderPosition. Otherwise, it will have the value the
2138     slider had before the mouse was pressed.
2139 
2140     The default value is 0.
2141 
2142     \sa QAbstractSlider::tracking, sliderPosition
2143 */
2144 
2145 /*!
2146     \variable QStyleOptionSlider::singleStep
2147     \brief the size of the single step of the slider
2148 
2149     The default value is 0.
2150 
2151     \sa QAbstractSlider::singleStep
2152 */
2153 
2154 /*!
2155     \variable QStyleOptionSlider::pageStep
2156     \brief the size of the page step of the slider
2157 
2158     The default value is 0.
2159 
2160     \sa QAbstractSlider::pageStep
2161 */
2162 #endif // QT_CONFIG(slider)
2163 
2164 #if QT_CONFIG(spinbox)
2165 /*!
2166     \class QStyleOptionSpinBox
2167     \brief The QStyleOptionSpinBox class is used to describe the
2168     parameters necessary for drawing a spin box.
2169 
2170     \inmodule QtWidgets
2171 
2172     QStyleOptionSpinBox contains all the information that QStyle
2173     functions need to draw QSpinBox and QDateTimeEdit.
2174 
2175     For performance reasons, the access to the member variables is
2176     direct (i.e., using the \c . or \c -> operator). This low-level feel
2177     makes the structures straightforward to use and emphasizes that
2178     these are simply parameters used by the style functions.
2179 
2180     For an example demonstrating how style options can be used, see
2181     the \l {widgets/styles}{Styles} example.
2182 
2183     \sa QStyleOption, QStyleOptionComplex
2184 */
2185 
2186 /*!
2187     Constructs a QStyleOptionSpinBox, initializing the members
2188     variables to their default values.
2189 */
2190 
QStyleOptionSpinBox()2191 QStyleOptionSpinBox::QStyleOptionSpinBox()
2192     : QStyleOptionComplex(Version, SO_SpinBox), buttonSymbols(QAbstractSpinBox::UpDownArrows),
2193       stepEnabled(QAbstractSpinBox::StepNone), frame(false)
2194 {
2195 }
2196 
2197 /*!
2198     \internal
2199 */
QStyleOptionSpinBox(int version)2200 QStyleOptionSpinBox::QStyleOptionSpinBox(int version)
2201     : QStyleOptionComplex(version, SO_SpinBox), buttonSymbols(QAbstractSpinBox::UpDownArrows),
2202       stepEnabled(QAbstractSpinBox::StepNone), frame(false)
2203 {
2204 }
2205 
2206 /*!
2207     \fn QStyleOptionSpinBox::QStyleOptionSpinBox(const QStyleOptionSpinBox &other)
2208 
2209     Constructs a copy of the \a other style option.
2210 */
2211 
2212 /*!
2213     \enum QStyleOptionSpinBox::StyleOptionType
2214 
2215     This enum is used to hold information about the type of the style option, and
2216     is defined for each QStyleOption subclass.
2217 
2218     \value Type The type of style option provided (\l{SO_SpinBox} for this class).
2219 
2220     The type is used internally by QStyleOption, its subclasses, and
2221     qstyleoption_cast() to determine the type of style option. In
2222     general you do not need to worry about this unless you want to
2223     create your own QStyleOption subclass and your own styles.
2224 
2225     \sa StyleOptionVersion
2226 */
2227 
2228 /*!
2229     \enum QStyleOptionSpinBox::StyleOptionVersion
2230 
2231     This enum is used to hold information about the version of the style option, and
2232     is defined for each QStyleOption subclass.
2233 
2234     \value Version 1
2235 
2236     The version is used by QStyleOption subclasses to implement
2237     extensions without breaking compatibility. If you use
2238     qstyleoption_cast(), you normally do not need to check it.
2239 
2240     \sa StyleOptionType
2241 */
2242 
2243 /*!
2244     \variable QStyleOptionSpinBox::buttonSymbols
2245     \brief the type of button symbols to draw for the spin box
2246 
2247     The default value is QAbstractSpinBox::UpDownArrows specufying
2248     little arrows in the classic style.
2249 
2250     \sa QAbstractSpinBox::ButtonSymbols
2251 */
2252 
2253 /*!
2254     \variable QStyleOptionSpinBox::stepEnabled
2255     \brief which buttons of the spin box that are enabled
2256 
2257     The default value is QAbstractSpinBox::StepNone.
2258 
2259     \sa QAbstractSpinBox::StepEnabled
2260 */
2261 
2262 /*!
2263     \variable QStyleOptionSpinBox::frame
2264     \brief whether the spin box has a frame
2265 
2266     The default value is false, i.e. the spin box has no frame.
2267 */
2268 #endif // QT_CONFIG(spinbox)
2269 
2270 /*!
2271     \class QStyleOptionDockWidget
2272     \brief The QStyleOptionDockWidget class is used to describe the
2273     parameters for drawing a dock widget.
2274 
2275     \inmodule QtWidgets
2276 
2277     QStyleOptionDockWidget contains all the information that QStyle
2278     functions need to draw graphical elements like QDockWidget.
2279 
2280     For performance reasons, the access to the member variables is
2281     direct (i.e., using the \c . or \c -> operator). This low-level feel
2282     makes the structures straightforward to use and emphasizes that
2283     these are simply parameters used by the style functions.
2284 
2285     For an example demonstrating how style options can be used, see
2286     the \l {widgets/styles}{Styles} example.
2287 
2288     \sa QStyleOption
2289 */
2290 
2291 /*!
2292     \typedef QStyleOptionDockWidgetV2
2293     \relates QStyleOptionDockWidget
2294     \obsolete
2295 
2296     Synonym for QStyleOptionDockWidget.
2297 */
2298 
2299 /*!
2300     Constructs a QStyleOptionDockWidget, initializing the member
2301     variables to their default values.
2302 */
2303 
QStyleOptionDockWidget()2304 QStyleOptionDockWidget::QStyleOptionDockWidget()
2305     : QStyleOption(Version, SO_DockWidget), closable(false),
2306       movable(false), floatable(false), verticalTitleBar(false)
2307 {
2308 }
2309 
2310 /*!
2311     \internal
2312 */
QStyleOptionDockWidget(int version)2313 QStyleOptionDockWidget::QStyleOptionDockWidget(int version)
2314     : QStyleOption(version, SO_DockWidget), closable(false),
2315       movable(false), floatable(false), verticalTitleBar(false)
2316 {
2317 }
2318 
2319 /*!
2320     \fn QStyleOptionDockWidget::QStyleOptionDockWidget(const QStyleOptionDockWidget &other)
2321 
2322     Constructs a copy of the \a other style option.
2323 */
2324 
2325 /*!
2326     \enum QStyleOptionDockWidget::StyleOptionType
2327 
2328     This enum is used to hold information about the type of the style option, and
2329     is defined for each QStyleOption subclass.
2330 
2331     \value Type The type of style option provided (\l{SO_DockWidget} for this class).
2332 
2333     The type is used internally by QStyleOption, its subclasses, and
2334     qstyleoption_cast() to determine the type of style option. In
2335     general you do not need to worry about this unless you want to
2336     create your own QStyleOption subclass and your own styles.
2337 
2338     \sa StyleOptionVersion
2339 */
2340 
2341 /*!
2342     \enum QStyleOptionDockWidget::StyleOptionVersion
2343 
2344     This enum is used to hold information about the version of the style option, and
2345     is defined for each QStyleOption subclass.
2346 
2347     \value Version 2
2348 
2349     The version is used by QStyleOption subclasses to implement
2350     extensions without breaking compatibility. If you use
2351     qstyleoption_cast(), you normally do not need to check it.
2352 
2353     \sa StyleOptionType
2354 */
2355 
2356 /*!
2357     \variable QStyleOptionDockWidget::title
2358     \brief the title of the dock window
2359 
2360     The default value is an empty string.
2361 */
2362 
2363 /*!
2364     \variable QStyleOptionDockWidget::closable
2365     \brief whether the dock window is closable
2366 
2367     The default value is true.
2368 */
2369 
2370 /*!
2371     \variable QStyleOptionDockWidget::movable
2372     \brief whether the dock window is movable
2373 
2374     The default value is false.
2375 */
2376 
2377 /*!
2378     \variable QStyleOptionDockWidget::floatable
2379     \brief whether the dock window is floatable
2380 
2381     The default value is true.
2382 */
2383 
2384 /*!
2385     \class QStyleOptionToolButton
2386     \brief The QStyleOptionToolButton class is used to describe the
2387     parameters for drawing a tool button.
2388 
2389     \inmodule QtWidgets
2390 
2391     QStyleOptionToolButton contains all the information that QStyle
2392     functions need to draw QToolButton.
2393 
2394     For performance reasons, the access to the member variables is
2395     direct (i.e., using the \c . or \c -> operator). This low-level feel
2396     makes the structures straightforward to use and emphasizes that
2397     these are simply parameters used by the style functions.
2398 
2399     For an example demonstrating how style options can be used, see
2400     the \l {widgets/styles}{Styles} example.
2401 
2402     \sa QStyleOption, QStyleOptionComplex, QStyleOptionButton
2403 */
2404 
2405 /*!
2406     \enum QStyleOptionToolButton::ToolButtonFeature
2407     Describes the various features that a tool button can have.
2408 
2409     \value None A normal tool button.
2410     \value Arrow The tool button is an arrow.
2411     \value Menu The tool button has a menu.
2412     \value PopupDelay There is a delay to showing the menu.
2413     \value HasMenu The button has a popup menu.
2414     \value MenuButtonPopup The button should display an arrow to
2415            indicate that a menu is present.
2416 
2417     \sa features, QToolButton::toolButtonStyle(), QToolButton::popupMode()
2418 */
2419 
2420 /*!
2421     Constructs a QStyleOptionToolButton, initializing the members
2422     variables to their default values.
2423 */
2424 
QStyleOptionToolButton()2425 QStyleOptionToolButton::QStyleOptionToolButton()
2426     : QStyleOptionComplex(Version, SO_ToolButton), features(None), arrowType(Qt::DownArrow)
2427     , toolButtonStyle(Qt::ToolButtonIconOnly)
2428 {
2429 }
2430 
2431 /*!
2432     \internal
2433 */
QStyleOptionToolButton(int version)2434 QStyleOptionToolButton::QStyleOptionToolButton(int version)
2435     : QStyleOptionComplex(version, SO_ToolButton), features(None), arrowType(Qt::DownArrow)
2436     , toolButtonStyle(Qt::ToolButtonIconOnly)
2437 
2438 {
2439 }
2440 
2441 /*!
2442     \fn QStyleOptionToolButton::QStyleOptionToolButton(const QStyleOptionToolButton &other)
2443 
2444     Constructs a copy of the \a other style option.
2445 */
2446 
2447 /*!
2448     \enum QStyleOptionToolButton::StyleOptionType
2449 
2450     This enum is used to hold information about the type of the style option, and
2451     is defined for each QStyleOption subclass.
2452 
2453     \value Type The type of style option provided (\l{SO_ToolButton} for this class).
2454 
2455     The type is used internally by QStyleOption, its subclasses, and
2456     qstyleoption_cast() to determine the type of style option. In
2457     general you do not need to worry about this unless you want to
2458     create your own QStyleOption subclass and your own styles.
2459 
2460     \sa StyleOptionVersion
2461 */
2462 
2463 /*!
2464     \enum QStyleOptionToolButton::StyleOptionVersion
2465 
2466     This enum is used to hold information about the version of the style option, and
2467     is defined for each QStyleOption subclass.
2468 
2469     \value Version 1
2470 
2471     The version is used by QStyleOption subclasses to implement
2472     extensions without breaking compatibility. If you use
2473     qstyleoption_cast(), you normally do not need to check it.
2474 
2475     \sa StyleOptionType
2476 */
2477 
2478 /*!
2479     \variable QStyleOptionToolButton::features
2480     \brief an OR combination of the tool button's features
2481 
2482     The default value is \l None.
2483 
2484     \sa ToolButtonFeature
2485 */
2486 
2487 /*!
2488     \variable QStyleOptionToolButton::icon
2489     \brief the icon for the tool button
2490 
2491     The default value is an empty icon, i.e. an icon with neither a
2492     pixmap nor a filename.
2493 
2494     \sa iconSize
2495 */
2496 
2497 /*!
2498     \variable QStyleOptionToolButton::iconSize
2499     \brief the size of the icon for the tool button
2500 
2501     The default value is QSize(-1, -1), i.e. an invalid size.
2502 */
2503 
2504 /*!
2505     \variable QStyleOptionToolButton::text
2506     \brief the text of the tool button
2507 
2508     This value is only used if toolButtonStyle is
2509     Qt::ToolButtonTextUnderIcon, Qt::ToolButtonTextBesideIcon, or
2510     Qt::ToolButtonTextOnly. The default value is an empty string.
2511 */
2512 
2513 /*!
2514     \variable QStyleOptionToolButton::arrowType
2515     \brief the direction of the arrow for the tool button
2516 
2517     This value is only used if \l features includes \l Arrow. The
2518     default value is Qt::DownArrow.
2519 */
2520 
2521 /*!
2522     \variable QStyleOptionToolButton::toolButtonStyle
2523     \brief a Qt::ToolButtonStyle value describing the appearance of
2524     the tool button
2525 
2526     The default value is Qt::ToolButtonIconOnly.
2527 
2528     \sa QToolButton::toolButtonStyle()
2529 */
2530 
2531 /*!
2532     \variable QStyleOptionToolButton::pos
2533     \brief the position of the tool button
2534 
2535     The default value is a null point, i.e. (0, 0)
2536 */
2537 
2538 /*!
2539     \variable QStyleOptionToolButton::font
2540     \brief the font that is used for the text
2541 
2542     This value is only used if toolButtonStyle is
2543     Qt::ToolButtonTextUnderIcon, Qt::ToolButtonTextBesideIcon, or
2544     Qt::ToolButtonTextOnly. By default, the application's default font
2545     is used.
2546 */
2547 
2548 /*!
2549     \class QStyleOptionComboBox
2550     \brief The QStyleOptionComboBox class is used to describe the
2551     parameter for drawing a combobox.
2552 
2553     \inmodule QtWidgets
2554 
2555     QStyleOptionButton contains all the information that QStyle
2556     functions need to draw QComboBox.
2557 
2558     For performance reasons, the access to the member variables is
2559     direct (i.e., using the \c . or \c -> operator). This low-level feel
2560     makes the structures straightforward to use and emphasizes that
2561     these are simply parameters used by the style functions.
2562 
2563     For an example demonstrating how style options can be used, see
2564     the \l {widgets/styles}{Styles} example.
2565 
2566     \sa QStyleOption, QStyleOptionComplex, QComboBox
2567 */
2568 
2569 /*!
2570     Creates a QStyleOptionComboBox, initializing the members variables
2571     to their default values.
2572 */
2573 
QStyleOptionComboBox()2574 QStyleOptionComboBox::QStyleOptionComboBox()
2575     : QStyleOptionComplex(Version, SO_ComboBox), editable(false), frame(true)
2576 {
2577 }
2578 
2579 /*!
2580     \internal
2581 */
QStyleOptionComboBox(int version)2582 QStyleOptionComboBox::QStyleOptionComboBox(int version)
2583     : QStyleOptionComplex(version, SO_ComboBox), editable(false), frame(true)
2584 {
2585 }
2586 
2587 /*!
2588     \fn QStyleOptionComboBox::QStyleOptionComboBox(const QStyleOptionComboBox &other)
2589 
2590     Constructs a copy of the \a other style option.
2591 */
2592 
2593 /*!
2594     \enum QStyleOptionComboBox::StyleOptionType
2595 
2596     This enum is used to hold information about the type of the style option, and
2597     is defined for each QStyleOption subclass.
2598 
2599     \value Type The type of style option provided (\l{SO_ComboBox} for this class).
2600 
2601     The type is used internally by QStyleOption, its subclasses, and
2602     qstyleoption_cast() to determine the type of style option. In
2603     general you do not need to worry about this unless you want to
2604     create your own QStyleOption subclass and your own styles.
2605 
2606     \sa StyleOptionVersion
2607 */
2608 
2609 /*!
2610     \enum QStyleOptionComboBox::StyleOptionVersion
2611 
2612     This enum is used to hold information about the version of the style option, and
2613     is defined for each QStyleOption subclass.
2614 
2615     \value Version 1
2616 
2617     The version is used by QStyleOption subclasses to implement
2618     extensions without breaking compatibility. If you use
2619     qstyleoption_cast(), you normally do not need to check it.
2620 
2621     \sa StyleOptionType
2622 */
2623 
2624 /*!
2625     \variable QStyleOptionComboBox::editable
2626     \brief whether or not the combobox is editable or not
2627 
2628     the default
2629     value is false
2630 
2631     \sa QComboBox::isEditable()
2632 */
2633 
2634 
2635 /*!
2636     \variable QStyleOptionComboBox::frame
2637     \brief whether the combo box has a frame
2638 
2639     The default value is true.
2640 */
2641 
2642 /*!
2643     \variable QStyleOptionComboBox::currentText
2644     \brief the text for the current item of the combo box
2645 
2646     The default value is an empty string.
2647 */
2648 
2649 /*!
2650     \variable QStyleOptionComboBox::currentIcon
2651     \brief the icon for the current item of the combo box
2652 
2653     The default value is an empty icon, i.e. an icon with neither a
2654     pixmap nor a filename.
2655 */
2656 
2657 /*!
2658     \variable QStyleOptionComboBox::iconSize
2659     \brief the icon size for the current item of the combo box
2660 
2661     The default value is QSize(-1, -1), i.e. an invalid size.
2662 */
2663 
2664 /*!
2665     \variable QStyleOptionComboBox::popupRect
2666     \brief the popup rectangle for the combobox
2667 
2668     The default value is a null rectangle, i.e. a rectangle with both
2669     the width and the height set to 0.
2670 
2671     This variable is currently unused. You can safely ignore it.
2672 
2673     \sa QStyle::SC_ComboBoxListBoxPopup
2674 */
2675 
2676 /*!
2677     \class QStyleOptionToolBox
2678     \brief The QStyleOptionToolBox class is used to describe the
2679     parameters needed for drawing a tool box.
2680 
2681     \inmodule QtWidgets
2682 
2683     QStyleOptionToolBox contains all the information that QStyle
2684     functions need to draw QToolBox.
2685 
2686     For performance reasons, the access to the member variables is
2687     direct (i.e., using the \c . or \c -> operator). This low-level feel
2688     makes the structures straightforward to use and emphasizes that
2689     these are simply parameters used by the style functions.
2690 
2691     For an example demonstrating how style options can be used, see
2692     the \l {widgets/styles}{Styles} example.
2693 
2694     \sa QStyleOption, QToolBox
2695 */
2696 
2697 /*!
2698     \typedef QStyleOptionToolBoxV2
2699     \relates QStyleOptionToolBox
2700     \obsolete
2701 
2702     Synonym for QStyleOptionToolBox.
2703 */
2704 
2705 /*!
2706     Creates a QStyleOptionToolBox, initializing the members variables
2707     to their default values.
2708 */
2709 
QStyleOptionToolBox()2710 QStyleOptionToolBox::QStyleOptionToolBox()
2711     : QStyleOption(Version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent)
2712 {
2713 }
2714 
2715 /*!
2716     \internal
2717 */
QStyleOptionToolBox(int version)2718 QStyleOptionToolBox::QStyleOptionToolBox(int version)
2719     : QStyleOption(version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent)
2720 {
2721 }
2722 
2723 /*!
2724     \fn QStyleOptionToolBox::QStyleOptionToolBox(const QStyleOptionToolBox &other)
2725 
2726     Constructs a copy of the \a other style option.
2727 */
2728 
2729 /*!
2730     \enum QStyleOptionToolBox::StyleOptionType
2731 
2732     This enum is used to hold information about the type of the style option, and
2733     is defined for each QStyleOption subclass.
2734 
2735     \value Type The type of style option provided (\l{SO_ToolBox} for this class).
2736 
2737     The type is used internally by QStyleOption, its subclasses, and
2738     qstyleoption_cast() to determine the type of style option. In
2739     general you do not need to worry about this unless you want to
2740     create your own QStyleOption subclass and your own styles.
2741 
2742     \sa StyleOptionVersion
2743 */
2744 
2745 /*!
2746     \enum QStyleOptionToolBox::StyleOptionVersion
2747 
2748     This enum is used to hold information about the version of the style option, and
2749     is defined for each QStyleOption subclass.
2750 
2751     \value Version 2
2752 
2753     The version is used by QStyleOption subclasses to implement
2754     extensions without breaking compatibility. If you use
2755     qstyleoption_cast(), you normally do not need to check it.
2756 
2757     \sa StyleOptionType
2758 */
2759 
2760 /*!
2761     \variable QStyleOptionToolBox::icon
2762     \brief the icon for the tool box tab
2763 
2764    The default value is an empty icon, i.e. an icon with neither a
2765    pixmap nor a filename.
2766 */
2767 
2768 /*!
2769     \variable QStyleOptionToolBox::text
2770     \brief the text for the tool box tab
2771 
2772     The default value is an empty string.
2773 */
2774 
2775 /*!
2776     \enum QStyleOptionToolBox::SelectedPosition
2777 
2778     This enum describes the position of the selected tab. Some styles
2779     need to draw a tab differently depending on whether or not it is
2780     adjacent to the selected tab.
2781 
2782     \value NotAdjacent The tab is not adjacent to a selected tab (or is the selected tab).
2783     \value NextIsSelected The next tab (typically the tab on the right) is selected.
2784     \value PreviousIsSelected The previous tab (typically the tab on the left) is selected.
2785 
2786     \sa selectedPosition
2787 */
2788 
2789 /*!
2790     \enum QStyleOptionToolBox::TabPosition
2791 
2792     This enum describes tab positions relative to other tabs.
2793 
2794     \value Beginning The tab is the first (i.e., top-most) tab in
2795            the toolbox.
2796     \value Middle The tab is placed in the middle of the toolbox.
2797     \value End The tab is placed at the bottom of the toolbox.
2798     \value OnlyOneTab There is only one tab in the toolbox.
2799 */
2800 
2801 /*!
2802     \variable QStyleOptionToolBox::selectedPosition
2803     \brief the position of the selected tab in relation to this tab
2804 
2805     The default value is NotAdjacent, i.e. the tab is not adjacent to
2806     a selected tab nor is it the selected tab.
2807 */
2808 
2809 #if QT_CONFIG(rubberband)
2810 /*!
2811     \class QStyleOptionRubberBand
2812     \brief The QStyleOptionRubberBand class is used to describe the
2813     parameters needed for drawing a rubber band.
2814 
2815     \inmodule QtWidgets
2816 
2817     QStyleOptionRubberBand contains all the information that
2818     QStyle functions need to draw QRubberBand.
2819 
2820     For performance reasons, the access to the member variables is
2821     direct (i.e., using the \c . or \c -> operator). This low-level feel
2822     makes the structures straightforward to use and emphasizes that
2823     these are simply parameters used by the style functions.
2824 
2825     For an example demonstrating how style options can be used, see
2826     the \l {widgets/styles}{Styles} example.
2827 
2828     \sa QStyleOption, QRubberBand
2829 */
2830 
2831 /*!
2832     Creates a QStyleOptionRubberBand, initializing the members
2833     variables to their default values.
2834 */
2835 
QStyleOptionRubberBand()2836 QStyleOptionRubberBand::QStyleOptionRubberBand()
2837     : QStyleOption(Version, SO_RubberBand), shape(QRubberBand::Line), opaque(false)
2838 {
2839 }
2840 
2841 /*!
2842     \internal
2843 */
QStyleOptionRubberBand(int version)2844 QStyleOptionRubberBand::QStyleOptionRubberBand(int version)
2845     : QStyleOption(version, SO_RubberBand), shape(QRubberBand::Line), opaque(false)
2846 {
2847 }
2848 
2849 /*!
2850     \fn QStyleOptionRubberBand::QStyleOptionRubberBand(const QStyleOptionRubberBand &other)
2851 
2852     Constructs a copy of the \a other style option.
2853 */
2854 
2855 /*!
2856     \enum QStyleOptionRubberBand::StyleOptionType
2857 
2858     This enum is used to hold information about the type of the style option, and
2859     is defined for each QStyleOption subclass.
2860 
2861     \value Type The type of style option provided (\l{SO_RubberBand} for this class).
2862 
2863     The type is used internally by QStyleOption, its subclasses, and
2864     qstyleoption_cast() to determine the type of style option. In
2865     general you do not need to worry about this unless you want to
2866     create your own QStyleOption subclass and your own styles.
2867 
2868     \sa StyleOptionVersion
2869 */
2870 
2871 /*!
2872     \enum QStyleOptionRubberBand::StyleOptionVersion
2873 
2874     This enum is used to hold information about the version of the style option, and
2875     is defined for each QStyleOption subclass.
2876 
2877     \value Version 1
2878 
2879     The version is used by QStyleOption subclasses to implement
2880     extensions without breaking compatibility. If you use
2881     qstyleoption_cast(), you normally do not need to check it.
2882 
2883     \sa StyleOptionType
2884 */
2885 
2886 /*!
2887     \variable QStyleOptionRubberBand::shape
2888     \brief the shape of the rubber band
2889 
2890     The default shape is QRubberBand::Line.
2891 */
2892 
2893 /*!
2894     \variable QStyleOptionRubberBand::opaque
2895     \brief whether the rubber band is required to be drawn in an opaque style
2896 
2897     The default value is true.
2898 */
2899 #endif // QT_CONFIG(rubberband)
2900 
2901 /*!
2902     \class QStyleOptionTitleBar
2903     \brief The QStyleOptionTitleBar class is used to describe the
2904     parameters for drawing a title bar.
2905 
2906     \inmodule QtWidgets
2907 
2908     QStyleOptionTitleBar contains all the information that QStyle
2909     functions need to draw the title bar of a QMdiSubWindow.
2910 
2911     For performance reasons, the access to the member variables is
2912     direct (i.e., using the \c . or \c -> operator). This low-level feel
2913     makes the structures straightforward to use and emphasizes that
2914     these are simply parameters used by the style functions.
2915 
2916     For an example demonstrating how style options can be used, see
2917     the \l {widgets/styles}{Styles} example.
2918 
2919     \sa QStyleOption, QStyleOptionComplex, QMdiSubWindow
2920 */
2921 
2922 /*!
2923     Constructs a QStyleOptionTitleBar, initializing the members
2924     variables to their default values.
2925 */
2926 
QStyleOptionTitleBar()2927 QStyleOptionTitleBar::QStyleOptionTitleBar()
2928     : QStyleOptionComplex(Version, SO_TitleBar), titleBarState(0)
2929 {
2930 }
2931 
2932 /*!
2933     \fn QStyleOptionTitleBar::QStyleOptionTitleBar(const QStyleOptionTitleBar &other)
2934 
2935     Constructs a copy of the \a other style option.
2936 */
2937 
2938 /*!
2939     \enum QStyleOptionTitleBar::StyleOptionType
2940 
2941     This enum is used to hold information about the type of the style option, and
2942     is defined for each QStyleOption subclass.
2943 
2944     \value Type The type of style option provided (\l{SO_TitleBar} for this class).
2945 
2946     The type is used internally by QStyleOption, its subclasses, and
2947     qstyleoption_cast() to determine the type of style option. In
2948     general you do not need to worry about this unless you want to
2949     create your own QStyleOption subclass and your own styles.
2950 
2951     \sa StyleOptionVersion
2952 */
2953 
2954 /*!
2955     \enum QStyleOptionTitleBar::StyleOptionVersion
2956 
2957     This enum is used to hold information about the version of the style option, and
2958     is defined for each QStyleOption subclass.
2959 
2960     \value Version 1
2961 
2962     The version is used by QStyleOption subclasses to implement
2963     extensions without breaking compatibility. If you use
2964     qstyleoption_cast(), you normally do not need to check it.
2965 
2966     \sa StyleOptionType
2967 */
2968 
2969 /*!
2970     \internal
2971 */
QStyleOptionTitleBar(int version)2972 QStyleOptionTitleBar::QStyleOptionTitleBar(int version)
2973     : QStyleOptionComplex(version, SO_TitleBar), titleBarState(0)
2974 {
2975 }
2976 
2977 
2978 /*!
2979     \variable QStyleOptionTitleBar::text
2980     \brief the text of the title bar
2981 
2982     The default value is an empty string.
2983 */
2984 
2985 /*!
2986     \variable QStyleOptionTitleBar::icon
2987     \brief the icon for the title bar
2988 
2989     The default value is an empty icon, i.e. an icon with neither a
2990     pixmap nor a filename.
2991 */
2992 
2993 /*!
2994     \variable QStyleOptionTitleBar::titleBarState
2995     \brief the state of the title bar
2996 
2997     This is basically the window state of the underlying widget. The
2998     default value is 0.
2999 
3000     \sa QWidget::windowState()
3001 */
3002 
3003 /*!
3004     \variable QStyleOptionTitleBar::titleBarFlags
3005     \brief the widget flags for the title bar
3006 
3007     The default value is Qt::Widget.
3008 
3009     \sa Qt::WindowFlags
3010 */
3011 
3012 #if QT_CONFIG(itemviews)
3013 /*!
3014     \class QStyleOptionViewItem
3015     \brief The QStyleOptionViewItem class is used to describe the
3016     parameters used to draw an item in a view widget.
3017 
3018     \inmodule QtWidgets
3019 
3020     QStyleOptionViewItem contains all the information that QStyle
3021     functions need to draw the items for Qt's model/view classes.
3022 
3023     For performance reasons, the access to the member variables is
3024     direct (i.e., using the \c . or \c -> operator). This low-level feel
3025     makes the structures straightforward to use and emphasizes that
3026     these are simply parameters used by the style functions.
3027 
3028     For an example demonstrating how style options can be used, see
3029     the \l {widgets/styles}{Styles} example.
3030 
3031     \sa QStyleOption, {model-view-programming.html}{Model/View
3032     Programming}
3033 */
3034 
3035 /*!
3036     \typedef QStyleOptionViewItemV2
3037     \relates QStyleOptionViewItem
3038     \obsolete
3039 
3040     Synonym for QStyleOptionViewItem.
3041 */
3042 
3043 /*!
3044     \typedef QStyleOptionViewItemV3
3045     \relates QStyleOptionViewItem
3046     \obsolete
3047 
3048     Synonym for QStyleOptionViewItem.
3049 */
3050 
3051 /*!
3052     \typedef QStyleOptionViewItemV4
3053     \relates QStyleOptionViewItem
3054     \obsolete
3055 
3056     Synonym for QStyleOptionViewItem.
3057 */
3058 
3059 /*!
3060     \enum QStyleOptionViewItem::Position
3061 
3062     This enum describes the position of the item's decoration.
3063 
3064     \value Left On the left of the text.
3065     \value Right On the right of the text.
3066     \value Top Above the text.
3067     \value Bottom Below the text.
3068 
3069     \sa decorationPosition
3070 */
3071 
3072 /*!
3073     \variable QStyleOptionViewItem::showDecorationSelected
3074     \brief whether the decoration should be highlighted on selected
3075     items
3076 
3077     If this option is true, the branch and any decorations on selected items
3078     should be highlighted, indicating that the item is selected; otherwise, no
3079     highlighting is required. The default value is false.
3080 
3081     \sa QStyle::SH_ItemView_ShowDecorationSelected, QAbstractItemView
3082 */
3083 
3084 /*!
3085     \variable QStyleOptionViewItem::textElideMode
3086     \brief where ellipsis should be added for text that is too long to fit
3087     into an item
3088 
3089     The default value is Qt::ElideMiddle, i.e. the ellipsis appears in
3090     the middle of the text.
3091 
3092     \sa Qt::TextElideMode, QStyle::SH_ItemView_EllipsisLocation
3093 */
3094 
3095 /*!
3096     Constructs a QStyleOptionViewItem, initializing the members
3097     variables to their default values.
3098 */
3099 
QStyleOptionViewItem()3100 QStyleOptionViewItem::QStyleOptionViewItem()
3101     : QStyleOption(Version, SO_ViewItem),
3102       displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
3103       textElideMode(Qt::ElideMiddle), decorationPosition(Left),
3104       showDecorationSelected(false), features(None), widget(nullptr),
3105       checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
3106 {
3107 }
3108 
3109 /*!
3110     \internal
3111 */
QStyleOptionViewItem(int version)3112 QStyleOptionViewItem::QStyleOptionViewItem(int version)
3113     : QStyleOption(version, SO_ViewItem),
3114       displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
3115       textElideMode(Qt::ElideMiddle), decorationPosition(Left),
3116       showDecorationSelected(false), features(None), widget(nullptr),
3117       checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
3118 {
3119 }
3120 
3121 /*!
3122     \fn QStyleOptionViewItem::QStyleOptionViewItem(const QStyleOptionViewItem &other)
3123 
3124     Constructs a copy of the \a other style option.
3125 */
3126 
3127 /*!
3128     \enum QStyleOptionViewItem::StyleOptionType
3129 
3130     This enum is used to hold information about the type of the style option, and
3131     is defined for each QStyleOption subclass.
3132 
3133     \value Type The type of style option provided (\l{SO_ViewItem} for this class).
3134 
3135     The type is used internally by QStyleOption, its subclasses, and
3136     qstyleoption_cast() to determine the type of style option. In
3137     general you do not need to worry about this unless you want to
3138     create your own QStyleOption subclass and your own styles.
3139 
3140     \sa StyleOptionVersion
3141 */
3142 
3143 /*!
3144     \enum QStyleOptionViewItem::StyleOptionVersion
3145 
3146     This enum is used to hold information about the version of the style option, and
3147     is defined for each QStyleOption subclass.
3148 
3149     \value Version 4
3150 
3151     The version is used by QStyleOption subclasses to implement
3152     extensions without breaking compatibility. If you use
3153     qstyleoption_cast(), you normally do not need to check it.
3154 
3155     \sa StyleOptionType
3156 */
3157 
3158 /*!
3159     \variable QStyleOptionViewItem::displayAlignment
3160     \brief the alignment of the display value for the item
3161 
3162     The default value is Qt::AlignLeft.
3163 */
3164 
3165 /*!
3166     \variable QStyleOptionViewItem::decorationAlignment
3167     \brief the alignment of the decoration for the item
3168 
3169     The default value is Qt::AlignLeft.
3170 */
3171 
3172 /*!
3173     \variable QStyleOptionViewItem::decorationPosition
3174     \brief the position of the decoration for the item
3175 
3176     The default value is \l Left.
3177 
3178     \sa Position
3179 */
3180 
3181 /*!
3182     \variable QStyleOptionViewItem::decorationSize
3183     \brief the size of the decoration for the item
3184 
3185     The default value is QSize(-1, -1), i.e. an invalid size.
3186 
3187     \sa decorationAlignment, decorationPosition
3188 */
3189 
3190 /*!
3191     \variable QStyleOptionViewItem::font
3192     \brief the font used for the item
3193 
3194     By default, the application's default font is used.
3195 
3196     \sa QFont
3197 */
3198 
3199 /*!
3200     \variable QStyleOptionViewItem::features
3201     \brief a bitwise OR of the features that describe this view item
3202 
3203     \sa ViewItemFeature
3204 */
3205 
3206 /*!
3207     \enum QStyleOptionViewItem::ViewItemFeature
3208 
3209     This enum describes the different types of features an item can have.
3210 
3211     \value None      Indicates a normal item.
3212     \value WrapText  Indicates an item with wrapped text.
3213     \value Alternate Indicates that the item's background is rendered using alternateBase.
3214     \value HasCheckIndicator Indicates that the item has a check state indicator.
3215     \value HasDisplay        Indicates that the item has a display role.
3216     \value HasDecoration     Indicates that the item has a decoration role.
3217 */
3218 
3219 /*!
3220     \variable QStyleOptionViewItem::index
3221 
3222     The model index that is to be drawn.
3223 */
3224 
3225 /*!
3226     \variable QStyleOptionViewItem::checkState
3227 
3228     If this view item is checkable, i.e.,
3229     ViewItemFeature::HasCheckIndicator is true, \c checkState is true
3230     if the item is checked; otherwise, it is false.
3231 
3232 */
3233 
3234 /*!
3235     \variable QStyleOptionViewItem::icon
3236 
3237     The icon (if any) to be drawn in the view item.
3238 */
3239 
3240 
3241 /*!
3242     \variable QStyleOptionViewItem::text
3243 
3244     The text (if any) to be drawn in the view item.
3245 */
3246 
3247 /*!
3248     \variable QStyleOptionViewItem::backgroundBrush
3249 
3250     The QBrush that should be used to paint the view items
3251     background.
3252 */
3253 
3254 /*!
3255     \variable QStyleOptionViewItem::viewItemPosition
3256 
3257     Gives the position of this view item relative to other items. See
3258     the \l{QStyleOptionViewItem::}{ViewItemPosition} enum for the
3259     details.
3260 */
3261 
3262 /*!
3263     \enum QStyleOptionViewItem::ViewItemPosition
3264 
3265     This enum is used to represent the placement of the item on
3266     a row. This can be used to draw items differently depending
3267     on their placement, for example by putting rounded edges at
3268     the beginning and end, and straight edges in between.
3269 
3270     \value Invalid   The ViewItemPosition is unknown and should be
3271                      disregarded.
3272     \value Beginning The item appears at the beginning of the row.
3273     \value Middle    The item appears in the middle of the row.
3274     \value End       The item appears at the end of the row.
3275     \value OnlyOne   The item is the only one on the row, and is
3276                      therefore both at the beginning and the end.
3277 */
3278 
3279 #endif // QT_CONFIG(itemviews)
3280 /*!
3281     \fn template <typename T> T qstyleoption_cast<T>(const QStyleOption *option)
3282     \relates QStyleOption
3283 
3284     Returns a T or \nullptr depending on the \l{QStyleOption::type}{type} and
3285     \l{QStyleOption::version}{version} of the given \a option.
3286 
3287     Example:
3288 
3289     \snippet qstyleoption/main.cpp 4
3290 
3291     \sa QStyleOption::type, QStyleOption::version
3292 */
3293 
3294 /*!
3295     \fn template <typename T> T qstyleoption_cast<T>(QStyleOption *option)
3296     \overload
3297     \relates QStyleOption
3298 
3299     Returns a T or \nullptr depending on the type of the given \a option.
3300 */
3301 
3302 #if QT_CONFIG(tabwidget)
3303 /*!
3304     \class QStyleOptionTabWidgetFrame
3305     \brief The QStyleOptionTabWidgetFrame class is used to describe the
3306     parameters for drawing the frame around a tab widget.
3307 
3308     \inmodule QtWidgets
3309 
3310     QStyleOptionTabWidgetFrame contains all the information that
3311     QStyle functions need to draw the frame around QTabWidget.
3312 
3313     For performance reasons, the access to the member variables is
3314     direct (i.e., using the \c . or \c -> operator). This low-level feel
3315     makes the structures straightforward to use and emphasizes that
3316     these are simply parameters used by the style functions.
3317 
3318     For an example demonstrating how style options can be used, see
3319     the \l {widgets/styles}{Styles} example.
3320 
3321     \sa QStyleOption, QTabWidget
3322 */
3323 
3324 /*!
3325     \typedef QStyleOptionTabWidgetFrameV2
3326     \relates QStyleOptionTabWidgetFrame
3327     \obsolete
3328 
3329     Synonym for QStyleOptionTabWidgetFrame.
3330 */
3331 
3332 /*!
3333     Constructs a QStyleOptionTabWidgetFrame, initializing the members
3334     variables to their default values.
3335 */
QStyleOptionTabWidgetFrame()3336 QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame()
3337     : QStyleOption(Version, SO_TabWidgetFrame), lineWidth(0), midLineWidth(0),
3338       shape(QTabBar::RoundedNorth)
3339 {
3340 }
3341 
3342 /*!
3343     \fn QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
3344 
3345     Constructs a copy of \a other.
3346 */
3347 
3348 /*! \internal */
QStyleOptionTabWidgetFrame(int version)3349 QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
3350     : QStyleOption(version, SO_TabWidgetFrame), lineWidth(0), midLineWidth(0),
3351       shape(QTabBar::RoundedNorth)
3352 {
3353 }
3354 
3355 /*!
3356     \enum QStyleOptionTabWidgetFrame::StyleOptionType
3357 
3358     This enum is used to hold information about the type of the style option, and
3359     is defined for each QStyleOption subclass.
3360 
3361     \value Type The type of style option provided (\l{SO_TabWidgetFrame} for this class).
3362 
3363     The type is used internally by QStyleOption, its subclasses, and
3364     qstyleoption_cast() to determine the type of style option. In
3365     general you do not need to worry about this unless you want to
3366     create your own QStyleOption subclass and your own styles.
3367 
3368     \sa StyleOptionVersion
3369 */
3370 
3371 /*!
3372     \enum QStyleOptionTabWidgetFrame::StyleOptionVersion
3373 
3374     This enum is used to hold information about the version of the style option, and
3375     is defined for each QStyleOption subclass.
3376 
3377     \value Version 2
3378 
3379     The version is used by QStyleOption subclasses to implement
3380     extensions without breaking compatibility. If you use
3381     qstyleoption_cast(), you normally do not need to check it.
3382 
3383     \sa StyleOptionType
3384 */
3385 
3386 /*!
3387     \variable QStyleOptionTabWidgetFrame::lineWidth
3388     \brief the line width for drawing the panel
3389 
3390     The default value is 0.
3391 */
3392 
3393 /*!
3394     \variable QStyleOptionTabWidgetFrame::midLineWidth
3395     \brief the mid-line width for drawing the panel
3396 
3397     The mid line width is usually used in drawing sunken or raised
3398     frames. The default value is 0.
3399 */
3400 
3401 /*!
3402     \variable QStyleOptionTabWidgetFrame::shape
3403     \brief the tab shape used to draw the tabs
3404 
3405     The default value is QTabBar::RoundedNorth.
3406 */
3407 
3408 /*!
3409     \variable QStyleOptionTabWidgetFrame::tabBarSize
3410     \brief the size of the tab bar
3411 
3412     The default value is QSize(-1, -1), i.e. an invalid size.
3413 */
3414 
3415 /*!
3416     \variable QStyleOptionTabWidgetFrame::rightCornerWidgetSize
3417     \brief the size of the right-corner widget
3418 
3419     The default value is QSize(-1, -1), i.e. an invalid size.
3420 */
3421 
3422 /*! \variable QStyleOptionTabWidgetFrame::leftCornerWidgetSize
3423     \brief the size of the left-corner widget
3424 
3425     The default value is QSize(-1, -1), i.e. an invalid size.
3426 */
3427 
3428 
3429 /*!
3430     \variable QStyleOptionTabWidgetFrame::tabBarRect
3431     \brief the rectangle containing all the tabs
3432 
3433     The default value is a null rectangle, i.e. a rectangle with both
3434     the width and the height set to 0.
3435 */
3436 
3437 /*!
3438     \variable QStyleOptionTabWidgetFrame::selectedTabRect
3439     \brief the rectangle containing the selected tab
3440 
3441     This rectangle is contained within the tabBarRect. The default
3442     value is a null rectangle, i.e. a rectangle with both the width
3443     and the height set to 0.
3444 */
3445 
3446 #endif // QT_CONFIG(tabwidget)
3447 
3448 #if QT_CONFIG(tabbar)
3449 
3450 /*!
3451     \class QStyleOptionTabBarBase
3452     \brief The QStyleOptionTabBarBase class is used to describe
3453     the base of a tab bar, i.e. the part that the tab bar usually
3454     overlaps with.
3455 
3456     \inmodule QtWidgets
3457 
3458     QStyleOptionTabBarBase  contains all the information that QStyle
3459     functions need to draw the tab bar base. Note that this is only
3460     drawn for a standalone QTabBar (one that isn't part of a
3461     QTabWidget).
3462 
3463     For performance reasons, the access to the member variables is
3464     direct (i.e., using the \c . or \c -> operator). This low-level feel
3465     makes the structures straightforward to use and emphasizes that
3466     these are simply parameters used by the style functions.
3467 
3468     For an example demonstrating how style options can be used, see
3469     the \l {widgets/styles}{Styles} example.
3470 
3471     \sa QStyleOption, QTabBar::drawBase()
3472 */
3473 
3474 /*!
3475     \typedef QStyleOptionTabBarBaseV2
3476     \relates QStyleOptionTabBarBase
3477     \obsolete
3478 
3479     Synonym for QStyleOptionTabBarBase.
3480 */
3481 
3482 /*!
3483     Construct a QStyleOptionTabBarBase, initializing the members
3484     vaiables to their default values.
3485 */
QStyleOptionTabBarBase()3486 QStyleOptionTabBarBase::QStyleOptionTabBarBase()
3487     : QStyleOption(Version, SO_TabBarBase), shape(QTabBar::RoundedNorth),
3488       documentMode(false)
3489 {
3490 }
3491 
3492 /*! \internal */
QStyleOptionTabBarBase(int version)3493 QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
3494     : QStyleOption(version, SO_TabBarBase), shape(QTabBar::RoundedNorth),
3495       documentMode(false)
3496 {
3497 }
3498 
3499 /*!
3500     \fn QStyleOptionTabBarBase::QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other)
3501 
3502     Constructs a copy of \a other.
3503 */
3504 
3505 /*!
3506     \enum QStyleOptionTabBarBase::StyleOptionType
3507 
3508     This enum is used to hold information about the type of the style option, and
3509     is defined for each QStyleOption subclass.
3510 
3511     \value Type The type of style option provided (\l{SO_TabBarBase} for this class).
3512 
3513     The type is used internally by QStyleOption, its subclasses, and
3514     qstyleoption_cast() to determine the type of style option. In
3515     general you do not need to worry about this unless you want to
3516     create your own QStyleOption subclass and your own styles.
3517 
3518     \sa StyleOptionVersion
3519 */
3520 
3521 /*!
3522     \enum QStyleOptionTabBarBase::StyleOptionVersion
3523 
3524     This enum is used to hold information about the version of the style option, and
3525     is defined for each QStyleOption subclass.
3526 
3527     \value Version 2
3528 
3529     The version is used by QStyleOption subclasses to implement
3530     extensions without breaking compatibility. If you use
3531     qstyleoption_cast(), you normally do not need to check it.
3532 
3533     \sa StyleOptionType
3534 */
3535 
3536 /*!
3537     \variable QStyleOptionTabBarBase::shape
3538     \brief the shape of the tab bar
3539 
3540     The default value is QTabBar::RoundedNorth.
3541 */
3542 
3543 /*!
3544     \variable QStyleOptionTabBarBase::tabBarRect
3545     \brief the rectangle containing all the tabs
3546 
3547     The default value is a null rectangle, i.e. a rectangle with both
3548     the width and the height set to 0.
3549 */
3550 
3551 /*!
3552     \variable QStyleOptionTabBarBase::selectedTabRect
3553     \brief the rectangle containing the selected tab
3554 
3555     This rectangle is contained within the tabBarRect. The default
3556     value is a null rectangle, i.e. a rectangle with both the width
3557     and the height set to 0.
3558 */
3559 
3560 
3561 /*!
3562     \variable QStyleOptionTabBarBase::documentMode
3563     \brief whether the tabbar is in document mode.
3564 
3565     The default value is false;
3566 */
3567 
3568 #endif // QT_CONFIG(tabbar)
3569 
3570 #if QT_CONFIG(sizegrip)
3571 /*!
3572     \class QStyleOptionSizeGrip
3573     \brief The QStyleOptionSizeGrip class is used to describe the
3574     parameter for drawing a size grip.
3575     \since 4.2
3576     \inmodule QtWidgets
3577 
3578     QStyleOptionButton contains all the information that QStyle
3579     functions need to draw QSizeGrip.
3580 
3581     For performance reasons, the access to the member variables is
3582     direct (i.e., using the \c . or \c -> operator). This low-level feel
3583     makes the structures straightforward to use and emphasizes that
3584     these are simply parameters used by the style functions.
3585 
3586     For an example demonstrating how style options can be used, see
3587     the \l {widgets/styles}{Styles} example.
3588 
3589     \sa QStyleOption, QStyleOptionComplex, QSizeGrip
3590 */
3591 
3592 /*!
3593     Constructs a QStyleOptionSizeGrip.
3594 */
QStyleOptionSizeGrip()3595 QStyleOptionSizeGrip::QStyleOptionSizeGrip()
3596     : QStyleOptionComplex(Version, Type), corner(Qt::BottomRightCorner)
3597 {
3598 }
3599 
3600 /*!
3601     \fn QStyleOptionSizeGrip::QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other)
3602 
3603     Constructs a copy of the \a other style option.
3604 */
3605 
3606 /*!
3607     \internal
3608 */
QStyleOptionSizeGrip(int version)3609 QStyleOptionSizeGrip::QStyleOptionSizeGrip(int version)
3610     : QStyleOptionComplex(version, Type), corner(Qt::BottomRightCorner)
3611 {
3612 }
3613 
3614 /*!
3615     \variable QStyleOptionSizeGrip::corner
3616 
3617     The corner in which the size grip is located.
3618 */
3619 
3620 /*!
3621     \enum QStyleOptionSizeGrip::StyleOptionType
3622 
3623     This enum is used to hold information about the type of the style option, and
3624     is defined for each QStyleOption subclass.
3625 
3626     \value Type The type of style option provided (\l{SO_TabBarBase} for this class).
3627 
3628     The type is used internally by QStyleOption, its subclasses, and
3629     qstyleoption_cast() to determine the type of style option. In
3630     general you do not need to worry about this unless you want to
3631     create your own QStyleOption subclass and your own styles.
3632 
3633     \sa StyleOptionVersion
3634 */
3635 
3636 /*!
3637     \enum QStyleOptionSizeGrip::StyleOptionVersion
3638 
3639     This enum is used to hold information about the version of the style option, and
3640     is defined for each QStyleOption subclass.
3641 
3642     \value Version 1
3643 
3644     The version is used by QStyleOption subclasses to implement
3645     extensions without breaking compatibility. If you use
3646     qstyleoption_cast(), you normally do not need to check it.
3647 
3648     \sa StyleOptionType
3649 */
3650 #endif // QT_CONFIG(sizegrip)
3651 
3652 /*!
3653     \class QStyleOptionGraphicsItem
3654     \brief The QStyleOptionGraphicsItem class is used to describe
3655     the parameters needed to draw a QGraphicsItem.
3656     \since 4.2
3657     \ingroup graphicsview-api
3658     \inmodule QtWidgets
3659 
3660     For performance reasons, the access to the member variables is
3661     direct (i.e., using the \c . or \c -> operator). This low-level feel
3662     makes the structures straightforward to use and emphasizes that
3663     these are simply parameters.
3664 
3665     For an example demonstrating how style options can be used, see
3666     the \l {widgets/styles}{Styles} example.
3667 
3668     \sa QStyleOption, QGraphicsItem::paint()
3669 */
3670 
3671 /*!
3672     \enum QStyleOptionGraphicsItem::StyleOptionType
3673 
3674     This enum is used to hold information about the type of the style option, and
3675     is defined for each QStyleOption subclass.
3676 
3677     \value Type The type of style option provided (\l SO_GraphicsItem for this class).
3678 
3679     The type is used internally by QStyleOption, its subclasses, and
3680     qstyleoption_cast() to determine the type of style option. In
3681     general you do not need to worry about this unless you want to
3682     create your own QStyleOption subclass and your own styles.
3683 
3684     \sa StyleOptionVersion
3685 */
3686 
3687 /*!
3688     \enum QStyleOptionGraphicsItem::StyleOptionVersion
3689 
3690     This enum is used to hold information about the version of the style option, and
3691     is defined for each QStyleOption subclass.
3692 
3693     \value Version 1
3694 
3695     The version is used by QStyleOption subclasses to implement
3696     extensions without breaking compatibility. If you use
3697     qstyleoption_cast(), you normally do not need to check it.
3698 
3699     \sa StyleOptionType
3700 */
3701 
3702 /*!
3703     Constructs a QStyleOptionGraphicsItem.
3704 */
QStyleOptionGraphicsItem()3705 QStyleOptionGraphicsItem::QStyleOptionGraphicsItem()
3706     : QStyleOption(Version, Type), levelOfDetail(1)
3707 {
3708 }
3709 
3710 /*!
3711     \internal
3712 */
QStyleOptionGraphicsItem(int version)3713 QStyleOptionGraphicsItem::QStyleOptionGraphicsItem(int version)
3714     : QStyleOption(version, Type), levelOfDetail(1)
3715 {
3716 }
3717 
3718 /*!
3719     \since 4.6
3720 
3721     Returns the level of detail from the \a worldTransform.
3722 
3723     Its value represents the maximum value of the height and
3724     width of a unity rectangle, mapped using the \a worldTransform
3725     of the painter used to draw the item. By default, if no
3726     transformations are applied, its value is 1. If zoomed out 1:2, the level
3727     of detail will be 0.5, and if zoomed in 2:1, its value is 2.
3728 
3729     \sa QGraphicsScene::minimumRenderSize()
3730 */
levelOfDetailFromTransform(const QTransform & worldTransform)3731 qreal QStyleOptionGraphicsItem::levelOfDetailFromTransform(const QTransform &worldTransform)
3732 {
3733     if (worldTransform.type() <= QTransform::TxTranslate)
3734         return 1; // Translation only? The LOD is 1.
3735 
3736     // Two unit vectors.
3737     QLineF v1(0, 0, 1, 0);
3738     QLineF v2(0, 0, 0, 1);
3739     // LOD is the transformed area of a 1x1 rectangle.
3740     return qSqrt(worldTransform.map(v1).length() * worldTransform.map(v2).length());
3741 }
3742 
3743 /*!
3744     \fn QStyleOptionGraphicsItem::QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other)
3745 
3746     Constructs a copy of \a other.
3747 */
3748 
3749 /*!
3750     \variable QStyleOptionGraphicsItem::exposedRect
3751     \brief the exposed rectangle, in item coordinates
3752 
3753     Make use of this rectangle to speed up item drawing when only parts of the
3754     item are exposed. If the whole item is exposed, this rectangle will be the
3755     same as QGraphicsItem::boundingRect().
3756 
3757     This member is only initialized for items that have the
3758     QGraphicsItem::ItemUsesExtendedStyleOption flag set.
3759 */
3760 
3761 /*!
3762      \variable QStyleOptionGraphicsItem::matrix
3763      \brief the complete transformation matrix for the item
3764      \obsolete
3765 
3766      The QMatrix provided through this member does include information about
3767      any perspective transformations applied to the view or item. To get the
3768      correct transformation matrix, use QPainter::transform() on the painter
3769      passed into the QGraphicsItem::paint() implementation.
3770 
3771      This matrix is the combination of the item's scene matrix and the matrix
3772      of the painter used for drawing the item. It is provided for convenience,
3773      allowing anvanced level-of-detail metrics that can be used to speed up
3774      item drawing.
3775 
3776      To find the dimensions of an item in screen coordinates (i.e., pixels),
3777      you can use the mapping functions of QMatrix, such as QMatrix::map().
3778 
3779      This member is only initialized for items that have the
3780      QGraphicsItem::ItemUsesExtendedStyleOption flag set.
3781 
3782      \sa QStyleOptionGraphicsItem::levelOfDetailFromTransform()
3783 */
3784 
3785 /*!
3786     \variable QStyleOptionGraphicsItem::levelOfDetail
3787     \obsolete
3788 
3789     Use QStyleOptionGraphicsItem::levelOfDetailFromTransform()
3790     together with QPainter::worldTransform() instead.
3791 */
3792 
3793 /*!
3794     \class QStyleHintReturn
3795     \brief The QStyleHintReturn class provides style hints that return more
3796     than basic data types.
3797 
3798     \ingroup appearance
3799     \inmodule QtWidgets
3800 
3801     QStyleHintReturn and its subclasses are used to pass information
3802     from a style back to the querying widget. This is most useful
3803     when the return value from QStyle::styleHint() does not provide enough
3804     detail; for example, when a mask is to be returned.
3805 
3806     \omit
3807     ### --Sam
3808     \endomit
3809 */
3810 
3811 /*!
3812     \enum QStyleHintReturn::HintReturnType
3813 
3814     \value SH_Default QStyleHintReturn
3815     \value SH_Mask \l QStyle::SH_RubberBand_Mask QStyle::SH_FocusFrame_Mask
3816     \value SH_Variant \l QStyle::SH_TextControl_FocusIndicatorTextCharFormat
3817 */
3818 
3819 /*!
3820     \enum QStyleHintReturn::StyleOptionType
3821 
3822     This enum is used to hold information about the type of the style option, and
3823     is defined for each QStyleHintReturn subclass.
3824 
3825     \value Type The type of style option provided (\l SH_Default for
3826            this class).
3827 
3828     The type is used internally by QStyleHintReturn, its subclasses, and
3829     qstyleoption_cast() to determine the type of style option. In
3830     general you do not need to worry about this unless you want to
3831     create your own QStyleHintReturn subclass and your own styles.
3832 
3833     \sa StyleOptionVersion
3834 */
3835 
3836 /*!
3837     \enum QStyleHintReturn::StyleOptionVersion
3838 
3839     This enum is used to hold information about the version of the style option, and
3840     is defined for each QStyleHintReturn subclass.
3841 
3842     \value Version 1
3843 
3844     The version is used by QStyleHintReturn subclasses to implement
3845     extensions without breaking compatibility. If you use
3846     qstyleoption_cast(), you normally do not need to check it.
3847 
3848     \sa StyleOptionType
3849 */
3850 
3851 /*!
3852     \variable QStyleHintReturn::type
3853     \brief the type of the style hint container
3854 
3855     \sa HintReturnType
3856 */
3857 
3858 /*!
3859     \variable QStyleHintReturn::version
3860     \brief the version of the style hint return container
3861 
3862     This value can be used by subclasses to implement extensions
3863     without breaking compatibility. If you use qstyleoption_cast<T>(), you
3864     normally do not need to check it.
3865 */
3866 
3867 /*!
3868     Constructs a QStyleHintReturn with version \a version and type \a
3869     type.
3870 
3871     The version has no special meaning for QStyleHintReturn; it can be
3872     used by subclasses to distinguish between different version of
3873     the same hint type.
3874 
3875     \sa QStyleOption::version, QStyleOption::type
3876 */
3877 
QStyleHintReturn(int version,int type)3878 QStyleHintReturn::QStyleHintReturn(int version, int type)
3879     : version(version), type(type)
3880 {
3881 }
3882 
3883 /*!
3884     \internal
3885 */
3886 
~QStyleHintReturn()3887 QStyleHintReturn::~QStyleHintReturn()
3888 {
3889 
3890 }
3891 
3892 /*!
3893     \class QStyleHintReturnMask
3894     \brief The QStyleHintReturnMask class provides style hints that return a QRegion.
3895 
3896     \ingroup appearance
3897     \inmodule QtWidgets
3898 
3899     \omit
3900     ### --Sam
3901     \endomit
3902 */
3903 
3904 /*!
3905     \variable QStyleHintReturnMask::region
3906     \brief the region for style hints that return a QRegion
3907 */
3908 
3909 /*!
3910     Constructs a QStyleHintReturnMask. The member variables are
3911     initialized to default values.
3912 */
QStyleHintReturnMask()3913 QStyleHintReturnMask::QStyleHintReturnMask() : QStyleHintReturn(Version, Type)
3914 {
3915 }
3916 
3917 /*!
3918     Destructor.
3919 */
~QStyleHintReturnMask()3920 QStyleHintReturnMask::~QStyleHintReturnMask()
3921 {
3922 }
3923 
3924 /*!
3925     \enum QStyleHintReturnMask::StyleOptionType
3926 
3927     This enum is used to hold information about the type of the style option, and
3928     is defined for each QStyleHintReturn subclass.
3929 
3930     \value Type The type of style option provided (\l{SH_Mask} for
3931            this class).
3932 
3933     The type is used internally by QStyleHintReturn, its subclasses, and
3934     qstyleoption_cast() to determine the type of style option. In
3935     general you do not need to worry about this unless you want to
3936     create your own QStyleHintReturn subclass and your own styles.
3937 
3938     \sa StyleOptionVersion
3939 */
3940 
3941 /*!
3942     \enum QStyleHintReturnMask::StyleOptionVersion
3943 
3944     This enum is used to hold information about the version of the style option, and
3945     is defined for each QStyleHintReturn subclass.
3946 
3947     \value Version 1
3948 
3949     The version is used by QStyleHintReturn subclasses to implement
3950     extensions without breaking compatibility. If you use
3951     qstyleoption_cast(), you normally do not need to check it.
3952 
3953     \sa StyleOptionType
3954 */
3955 
3956 /*!
3957     \class QStyleHintReturnVariant
3958     \brief The QStyleHintReturnVariant class provides style hints that return a QVariant.
3959     \since 4.3
3960     \ingroup appearance
3961     \inmodule QtWidgets
3962 */
3963 
3964 /*!
3965     \variable QStyleHintReturnVariant::variant
3966     \brief the variant for style hints that return a QVariant
3967 */
3968 
3969 /*!
3970     Constructs a QStyleHintReturnVariant. The member variables are
3971     initialized to default values.
3972 */
QStyleHintReturnVariant()3973 QStyleHintReturnVariant::QStyleHintReturnVariant() : QStyleHintReturn(Version, Type)
3974 {
3975 }
3976 
3977 /*!
3978     Destructor.
3979 */
~QStyleHintReturnVariant()3980 QStyleHintReturnVariant::~QStyleHintReturnVariant()
3981 {
3982 }
3983 
3984 /*!
3985     \enum QStyleHintReturnVariant::StyleOptionType
3986 
3987     This enum is used to hold information about the type of the style option, and
3988     is defined for each QStyleHintReturn subclass.
3989 
3990     \value Type The type of style option provided (\l{SH_Variant} for
3991            this class).
3992 
3993     The type is used internally by QStyleHintReturn, its subclasses, and
3994     qstyleoption_cast() to determine the type of style option. In
3995     general you do not need to worry about this unless you want to
3996     create your own QStyleHintReturn subclass and your own styles.
3997 
3998     \sa StyleOptionVersion
3999 */
4000 
4001 /*!
4002     \enum QStyleHintReturnVariant::StyleOptionVersion
4003 
4004     This enum is used to hold information about the version of the style option, and
4005     is defined for each QStyleHintReturn subclass.
4006 
4007     \value Version 1
4008 
4009     The version is used by QStyleHintReturn subclasses to implement
4010     extensions without breaking compatibility. If you use
4011     qstyleoption_cast(), you normally do not need to check it.
4012 
4013     \sa StyleOptionType
4014 */
4015 
4016 /*!
4017     \fn template <typename T> T qstyleoption_cast<T>(const QStyleHintReturn *hint)
4018     \relates QStyleHintReturn
4019 
4020     Returns a T or \nullptr depending on the \l{QStyleHintReturn::type}{type}
4021     and \l{QStyleHintReturn::version}{version} of \a hint.
4022 
4023     Example:
4024 
4025     \snippet code/src_gui_styles_qstyleoption.cpp 0
4026 
4027     \sa QStyleHintReturn::type, QStyleHintReturn::version
4028 */
4029 
4030 /*!
4031     \fn template <typename T> T qstyleoption_cast<T>(QStyleHintReturn *hint)
4032     \overload
4033     \relates QStyleHintReturn
4034 
4035     Returns a T or \nullptr depending on the type of \a hint.
4036 */
4037 
4038 #if !defined(QT_NO_DEBUG_STREAM)
operator <<(QDebug debug,const QStyleOption::OptionType & optionType)4039 QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType)
4040 {
4041 #if !defined(QT_NO_DEBUG)
4042     switch (optionType) {
4043     case QStyleOption::SO_Default:
4044         debug << "SO_Default"; break;
4045     case QStyleOption::SO_FocusRect:
4046         debug << "SO_FocusRect"; break;
4047     case QStyleOption::SO_Button:
4048         debug << "SO_Button"; break;
4049     case QStyleOption::SO_Tab:
4050         debug << "SO_Tab"; break;
4051     case QStyleOption::SO_MenuItem:
4052         debug << "SO_MenuItem"; break;
4053     case QStyleOption::SO_Frame:
4054         debug << "SO_Frame"; break;
4055     case QStyleOption::SO_ProgressBar:
4056         debug << "SO_ProgressBar"; break;
4057     case QStyleOption::SO_ToolBox:
4058         debug << "SO_ToolBox"; break;
4059     case QStyleOption::SO_Header:
4060         debug << "SO_Header"; break;
4061     case QStyleOption::SO_DockWidget:
4062         debug << "SO_DockWidget"; break;
4063     case QStyleOption::SO_ViewItem:
4064         debug << "SO_ViewItem"; break;
4065     case QStyleOption::SO_TabWidgetFrame:
4066         debug << "SO_TabWidgetFrame"; break;
4067     case QStyleOption::SO_TabBarBase:
4068         debug << "SO_TabBarBase"; break;
4069     case QStyleOption::SO_RubberBand:
4070         debug << "SO_RubberBand"; break;
4071     case QStyleOption::SO_Complex:
4072         debug << "SO_Complex"; break;
4073     case QStyleOption::SO_Slider:
4074         debug << "SO_Slider"; break;
4075     case QStyleOption::SO_SpinBox:
4076         debug << "SO_SpinBox"; break;
4077     case QStyleOption::SO_ToolButton:
4078         debug << "SO_ToolButton"; break;
4079     case QStyleOption::SO_ComboBox:
4080         debug << "SO_ComboBox"; break;
4081     case QStyleOption::SO_TitleBar:
4082         debug << "SO_TitleBar"; break;
4083     case QStyleOption::SO_CustomBase:
4084         debug << "SO_CustomBase"; break;
4085     case QStyleOption::SO_GroupBox:
4086         debug << "SO_GroupBox"; break;
4087     case QStyleOption::SO_ToolBar:
4088         debug << "SO_ToolBar"; break;
4089     case QStyleOption::SO_ComplexCustomBase:
4090         debug << "SO_ComplexCustomBase"; break;
4091     case QStyleOption::SO_SizeGrip:
4092         debug << "SO_SizeGrip"; break;
4093     case QStyleOption::SO_GraphicsItem:
4094         debug << "SO_GraphicsItem"; break;
4095     }
4096 #else
4097     Q_UNUSED(optionType);
4098 #endif
4099     return debug;
4100 }
4101 
operator <<(QDebug debug,const QStyleOption & option)4102 QDebug operator<<(QDebug debug, const QStyleOption &option)
4103 {
4104 #if !defined(QT_NO_DEBUG)
4105     debug << "QStyleOption(";
4106     debug << QStyleOption::OptionType(option.type);
4107     debug << ',' << (option.direction == Qt::RightToLeft ? "RightToLeft" : "LeftToRight");
4108     debug << ',' << option.state;
4109     debug << ',' << option.rect;
4110     debug << ',' << option.styleObject;
4111     debug << ')';
4112 #else
4113     Q_UNUSED(option);
4114 #endif
4115     return debug;
4116 }
4117 #endif
4118 
4119 QT_END_NAMESPACE
4120