Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qstyleoption.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <QtWidgets/private/qtwidgetsglobal_p.h>
5#include "private/qstylehelper_p.h"
6#include "qstyleoption.h"
7#include "qapplication.h"
8#include <qdebug.h>
9#include <QtCore/qmath.h>
10
12
114 : version(version), type(type), state(QStyle::State_None),
116{
117}
118
119
126
141{
144 if (widget->isEnabled())
146 if (widget->hasFocus())
148 if (window->testAttribute(Qt::WA_KeyboardFocusChange))
150 if (widget->underMouse())
152 if (window->isActiveWindow())
154 if (widget->isWindow())
159 break;
162 break;
163 default:
164 ;
165 }
166#ifdef QT_KEYPAD_NAVIGATION
167 if (widget->hasEditFocus())
168 state |= QStyle::State_HasEditFocus;
169#endif
170
172 rect = widget->rect();
175 styleObject = const_cast<QWidget*>(widget);
176}
177
187
192{
193 state = other.state;
194 direction = other.direction;
195 rect = other.rect;
196 fontMetrics = other.fontMetrics;
197 palette = other.palette;
198 styleObject = other.styleObject;
199 return *this;
200}
201
341
346 : QStyleOption(version, SO_FocusRect)
347{
348 state |= QStyle::State_KeyboardFocusChange; // assume we had one, will be corrected in initFrom()
349}
350
437
442 : QStyleOption(version, SO_Frame), lineWidth(0), midLineWidth(0),
443 features(None), frameShape(QFrame::NoFrame)
444{
445}
446
646
657 : QStyleOptionComplex(version, Type), features(QStyleOptionFrame::None),
658 textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0)
659{
660}
661
691
696 : QStyleOption(version, SO_Header),
697 section(0), textAlignment(Qt::AlignLeft), iconAlignment(Qt::AlignLeft),
698 position(QStyleOptionHeader::Beginning),
699 selectedPosition(QStyleOptionHeader::NotAdjacent), sortIndicator(None),
700 orientation(Qt::Horizontal)
701{
702}
703
859
864: QStyleOptionHeader(version), textElideMode(Qt::ElideNone), isSectionDragTarget(false), unused(0)
865{}
866
930
935 : QStyleOption(version, SO_Button), features(None)
936{
937}
938
1008#if QT_CONFIG(toolbar)
1047QStyleOptionToolBar::QStyleOptionToolBar()
1048 : QStyleOptionToolBar(Version)
1049{
1050}
1051
1061QStyleOptionToolBar::QStyleOptionToolBar(int version)
1062: QStyleOption(version, SO_ToolBar), positionOfLine(OnlyOne), positionWithinLine(OnlyOne),
1063 toolBarArea(Qt::TopToolBarArea), features(None), lineWidth(0), midLineWidth(0)
1064{
1065
1066}
1067
1190#endif
1191
1192#if QT_CONFIG(tabbar)
1228QStyleOptionTab::QStyleOptionTab()
1229 : QStyleOptionTab(QStyleOptionTab::Version)
1230{
1231}
1232
1236QStyleOptionTab::QStyleOptionTab(int version)
1237 : QStyleOption(version, SO_Tab),
1238 shape(QTabBar::RoundedNorth),
1239 row(0),
1240 position(Beginning),
1241 selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
1242 documentMode(false),
1243 features(QStyleOptionTab::None)
1244{
1245}
1246
1429#endif // QT_CONFIG(tabbar)
1430
1467
1472 : QStyleOption(version, SO_ProgressBar),
1473 minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false),
1474 invertedAppearance(false), bottomToTop(false)
1475{
1477}
1478
1625
1630 : QStyleOption(version, SO_MenuItem), menuItemType(Normal),
1631 checkType(NotCheckable), checked(false), menuHasCheckableItems(true), maxIconWidth(0),
1632 reservedShortcutWidth(0)
1633{
1634}
1635
1823 : QStyleOption(version, type), subControls(QStyle::SC_All), activeSubControls(QStyle::SC_None)
1824{
1825}
1826
1886#if QT_CONFIG(slider)
1911QStyleOptionSlider::QStyleOptionSlider()
1912 : QStyleOptionSlider(Version)
1913{
1914}
1915
1919QStyleOptionSlider::QStyleOptionSlider(int version)
1920 : QStyleOptionComplex(version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0),
1921 tickPosition(QSlider::NoTicks), tickInterval(0), upsideDown(false),
1922 sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0),
1923 dialWrapping(false), keyboardModifiers{}
1924{
1925}
1926
2078#endif // QT_CONFIG(slider)
2079
2080#if QT_CONFIG(spinbox)
2105QStyleOptionSpinBox::QStyleOptionSpinBox()
2106 : QStyleOptionSpinBox(Version)
2107{
2108}
2109
2113QStyleOptionSpinBox::QStyleOptionSpinBox(int version)
2114 : QStyleOptionComplex(version, SO_SpinBox), buttonSymbols(QAbstractSpinBox::UpDownArrows),
2115 stepEnabled(QAbstractSpinBox::StepNone), frame(false)
2116{
2117}
2118
2181#endif // QT_CONFIG(spinbox)
2182
2211
2216 : QStyleOption(version, SO_DockWidget), closable(false),
2217 movable(false), floatable(false), verticalTitleBar(false)
2218{
2219}
2220
2329
2334 : QStyleOptionComplex(version, SO_ToolButton), features(None), arrowType(Qt::DownArrow)
2335 , toolButtonStyle(Qt::ToolButtonIconOnly)
2336
2337{
2338}
2339
2475
2480 : QStyleOptionComplex(version, SO_ComboBox), editable(false), frame(true)
2481{
2482}
2483
2608
2613 : QStyleOption(version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent)
2614{
2615}
2616
2703#if QT_CONFIG(rubberband)
2728QStyleOptionRubberBand::QStyleOptionRubberBand()
2729 : QStyleOptionRubberBand(Version)
2730{
2731}
2732
2736QStyleOptionRubberBand::QStyleOptionRubberBand(int version)
2737 : QStyleOption(version, SO_RubberBand), shape(QRubberBand::Line), opaque(false)
2738{
2739}
2740
2791#endif // QT_CONFIG(rubberband)
2792
2821
2863 : QStyleOptionComplex(version, SO_TitleBar), titleBarState(0)
2864{
2865}
2866
2867
2902#if QT_CONFIG(itemviews)
2964QStyleOptionViewItem::QStyleOptionViewItem()
2965 : QStyleOptionViewItem(Version)
2966{
2967}
2968
2972QStyleOptionViewItem::QStyleOptionViewItem(int version)
2973 : QStyleOption(version, SO_ViewItem),
2974 displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
2975 textElideMode(Qt::ElideMiddle), decorationPosition(Left),
2976 showDecorationSelected(false), features(None), widget(nullptr),
2977 checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
2978{
2979}
2980
3139#endif // QT_CONFIG(itemviews)
3162#if QT_CONFIG(tabwidget)
3186QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame()
3187 : QStyleOptionTabWidgetFrame(Version)
3188{
3189}
3190
3198QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
3199 : QStyleOption(version, SO_TabWidgetFrame), lineWidth(0), midLineWidth(0),
3200 shape(QTabBar::RoundedNorth)
3201{
3202}
3203
3295#endif // QT_CONFIG(tabwidget)
3296
3297#if QT_CONFIG(tabbar)
3298
3325QStyleOptionTabBarBase::QStyleOptionTabBarBase()
3326 : QStyleOptionTabBarBase(Version)
3327{
3328}
3329
3331QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
3332 : QStyleOption(version, SO_TabBarBase), shape(QTabBar::RoundedNorth),
3333 documentMode(false)
3334{
3335}
3336
3406#endif // QT_CONFIG(tabbar)
3407
3408#if QT_CONFIG(sizegrip)
3433{
3434}
3435
3446 : QStyleOptionComplex(version, Type), corner(Qt::BottomRightCorner)
3447{
3448}
3449
3486#endif // QT_CONFIG(sizegrip)
3487
3543
3551
3566{
3567 if (worldTransform.type() <= QTransform::TxTranslate)
3568 return 1; // Translation only? The LOD is 1.
3569
3570 // Two unit vectors.
3571 QLineF v1(0, 0, 1, 0);
3572 QLineF v2(0, 0, 0, 1);
3573 // LOD is the transformed area of a 1x1 rectangle.
3574 return qSqrt(worldTransform.map(v1).length() * worldTransform.map(v2).length());
3575}
3576
3677 : version(version), type(type)
3678{
3679}
3680
3689
3710
3717
3770
3777
3832#if !defined(QT_NO_DEBUG_STREAM)
3834{
3835#if !defined(QT_NO_DEBUG)
3836 switch (optionType) {
3838 debug << "SO_Default"; break;
3840 debug << "SO_FocusRect"; break;
3842 debug << "SO_Button"; break;
3844 debug << "SO_Tab"; break;
3846 debug << "SO_MenuItem"; break;
3848 debug << "SO_Frame"; break;
3850 debug << "SO_ProgressBar"; break;
3852 debug << "SO_ToolBox"; break;
3854 debug << "SO_Header"; break;
3856 debug << "SO_DockWidget"; break;
3858 debug << "SO_ViewItem"; break;
3860 debug << "SO_TabWidgetFrame"; break;
3862 debug << "SO_TabBarBase"; break;
3864 debug << "SO_RubberBand"; break;
3866 debug << "SO_Complex"; break;
3868 debug << "SO_Slider"; break;
3870 debug << "SO_SpinBox"; break;
3872 debug << "SO_ToolButton"; break;
3874 debug << "SO_ComboBox"; break;
3876 debug << "SO_TitleBar"; break;
3878 debug << "SO_CustomBase"; break;
3880 debug << "SO_GroupBox"; break;
3882 debug << "SO_ToolBar"; break;
3884 debug << "SO_ComplexCustomBase"; break;
3886 debug << "SO_SizeGrip"; break;
3888 debug << "SO_GraphicsItem"; break;
3889 }
3890#else
3891 Q_UNUSED(optionType);
3892#endif
3893 return debug;
3894}
3895
3897{
3898#if !defined(QT_NO_DEBUG)
3899 debug << "QStyleOption(";
3901 debug << ',' << (option.direction == Qt::RightToLeft ? "RightToLeft" : "LeftToRight");
3902 debug << ',' << option.state;
3903 debug << ',' << option.rect;
3904 debug << ',' << option.styleObject;
3905 debug << ')';
3906#else
3908#endif
3909 return debug;
3910}
3911#endif
3912
The QAbstractSpinBox class provides a spinbox and a line edit to display values.
\inmodule QtCore
\reentrant
Definition qfont.h:22
The QFrame class is the base class of widgets that can have a frame.
Definition qframe.h:17
\macro qGuiApp
\inmodule QtCore\compares equality \compareswith equality QLine \endcompareswith
Definition qline.h:192
The QRubberBand class provides a rectangle or line that can indicate a selection or a boundary.
Definition qrubberband.h:18
The QSlider widget provides a vertical or horizontal slider.
Definition qslider.h:18
~QStyleHintReturnMask()
Destructor.
QStyleHintReturnMask()
\variable QStyleHintReturnMask::region
QStyleHintReturnVariant()
\variable QStyleHintReturnVariant::variant
~QStyleHintReturnVariant()
Destructor.
\variable QStyleOptionGraphicsItem::exposedRect
QStyleHintReturn(int version=QStyleOption::Version, int type=SH_Default)
\variable QStyleHintReturn::type
\variable QStyleOptionHeaderV2::textElideMode
QStyleOptionButton()
Constructs a QStyleOptionButton, initializing the members variables to their default values.
\variable QStyleOptionToolButton::features
QStyleOptionComboBox()
Creates a QStyleOptionComboBox, initializing the members variables to their default values.
\variable QStyleOptionMenuItem::menuItemType
QStyleOptionComplex(int version=QStyleOptionComplex::Version, int type=SO_Complex)
Constructs a QStyleOptionComplex of the specified type and version, initializing the member variables...
\variable QStyleOptionComplex::subControls
QStyleOptionDockWidget()
Constructs a QStyleOptionDockWidget, initializing the member variables to their default values.
\variable QStyleOption::palette
QStyleOptionFocusRect()
Constructs a QStyleOptionFocusRect, initializing the members variables to their default values.
\variable QStyleOptionFocusRect::backgroundColor
QStyleOptionFrame()
Constructs a QStyleOptionFrame, initializing the members variables to their default values.
The QStyleOptionGraphicsItem class is used to describe the parameters needed to draw a QGraphicsItem.
static qreal levelOfDetailFromTransform(const QTransform &worldTransform)
QStyleOptionGraphicsItem()
Constructs a QStyleOptionGraphicsItem.
\variable QStyleOptionFrame::features
QStyleOptionGroupBox()
\variable QStyleOptionGroupBox::lineWidth
The QStyleOptionHeaderV2 class is used to describe the parameters for drawing a header.
QStyleOptionHeaderV2()
Constructs a QStyleOptionHeaderV2, initializing the members variables to their default values.
The QStyleOptionHeader class is used to describe the parameters for drawing a header.
QStyleOptionHeader()
Constructs a QStyleOptionHeader, initializing the members variables to their default values.
\variable QStyleOptionProgressBar::minimum
QStyleOptionMenuItem()
Constructs a QStyleOptionMenuItem, initializing the members variables to their default values.
\variable QStyleOptionButton::features
QStyleOptionProgressBar()
Constructs a QStyleOptionProgressBar, initializing the members variables to their default values.
\variable QStyleOptionToolBox::selectedPosition
QStyleOptionTitleBar()
Constructs a QStyleOptionTitleBar, initializing the members variables to their default values.
\variable QStyleOptionComboBox::editable
QStyleOptionToolBox()
Creates a QStyleOptionToolBox, initializing the members variables to their default values.
\variable QStyleOptionDockWidget::title
QStyleOptionToolButton()
Constructs a QStyleOptionToolButton, initializing the members variables to their default values.
The QStyleOption class stores the parameters used by QStyle functions.
OptionType
This enum is used internally by QStyleOption, its subclasses, and qstyleoption_cast() to determine th...
QFontMetrics fontMetrics
QStyle::State state
QPalette palette
QStyleOption(int version=QStyleOption::Version, int type=SO_Default)
Constructs a QStyleOption with the specified version and type.
void initFrom(const QWidget *w)
QObject * styleObject
~QStyleOption()
Destroys this style option object.
Qt::LayoutDirection direction
QStyleOption & operator=(const QStyleOption &other)
Assign other to this QStyleOption.
The QStyle class is an abstract base class that encapsulates the look and feel of a GUI.
Definition qstyle.h:29
@ State_Window
Definition qstyle.h:84
@ State_MouseOver
Definition qstyle.h:80
@ State_HasFocus
Definition qstyle.h:75
@ State_Active
Definition qstyle.h:83
@ State_Mini
Definition qstyle.h:96
@ State_Small
Definition qstyle.h:95
@ State_KeyboardFocusChange
Definition qstyle.h:90
@ State_Enabled
Definition qstyle.h:67
@ State_Horizontal
Definition qstyle.h:74
@ State_None
Definition qstyle.h:66
The QTabBar class provides a tab bar, e.g.
Definition qtabbar.h:19
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
QPoint map(const QPoint &p) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
TransformationType type() const
Returns the transformation type of this matrix.
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
QWidget * window() const
Returns the window for this widget, i.e.
Definition qwidget.cpp:4313
Qt::LayoutDirection layoutDirection
the layout direction for this widget.
Definition qwidget.h:170
QPalette palette
the widget's palette
Definition qwidget.h:132
QFontMetrics fontMetrics() const
Returns the font metrics for the widget's current font.
Definition qwidget.h:847
QRect rect
the internal geometry of the widget excluding any window frame
Definition qwidget.h:116
bool isEnabled() const
Definition qwidget.h:814
bool hasFocus() const
Definition qwidget.cpp:6446
bool underMouse() const
Returns true if the widget is under the mouse cursor; otherwise returns false.
Definition qwidget.h:859
bool isWindow() const
Returns true if the widget is an independent window, otherwise returns false.
Definition qwidget.h:811
QOpenGLWidget * widget
[1]
rect
[4]
direction
fontMetrics
else opt state
[0]
@ OnlyOne
Definition qprint_p.h:96
QVector3D minimum(const QVector3D &v1, const QVector3D &v2) Q_DECL_NOTHROW
Definition qssgutils_p.h:54
QVector3D maximum(const QVector3D &v1, const QVector3D &v2) Q_DECL_NOTHROW
Definition qssgutils_p.h:55
WidgetSizePolicy widgetSizePolicy(const QWidget *widget, const QStyleOption *opt)
Combined button and popup list for selecting options.
Definition qcompare.h:63
@ BottomRightCorner
@ Unchecked
@ AlignLeft
Definition qnamespace.h:144
@ WA_KeyboardFocusChange
Definition qnamespace.h:344
@ TopToolBarArea
@ RightToLeft
@ Horizontal
Definition qnamespace.h:99
@ ElideMiddle
Definition qnamespace.h:191
qfloat16 qSqrt(qfloat16 f)
Definition qfloat16.h:289
@ None
Definition qhash.cpp:531
@ Invalid
GLint GLfloat GLfloat GLfloat v2
GLenum type
GLint GLfloat GLfloat v1
GLenum GLenum GLsizei void * row
GLuint GLenum option
@ Left
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType)
#define v1
#define Q_UNUSED(x)
double qreal
Definition qtypes.h:187
QObject * styleObject(const QStyleOption *option)
QObject::connect nullptr
QSharedPointer< T > other(t)
[5]
aWidget window() -> setWindowTitle("New Window Title")
[2]
QFrame frame
[0]
Definition moc.h:23