Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqc2qstyle_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 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// Qt-Security score:significant reason:default
4
5#ifndef QQC2QSTYLE_P_P_H
6#define QQC2QSTYLE_P_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists for the convenience
13// of qstyle_*.cpp. This header file may change from version to version
14// without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <private/qobject_p.h>
20#include <private/qqc2qstyle_p.h>
21
22#include <QtGui/qguiapplication.h>
23
25
26namespace QQC2 {
27
29{
30 Q_DECLARE_PUBLIC(QStyle)
31
32public:
33 static bool useFullScreenForPopup();
34 mutable int layoutSpacingIndex = -1;
36};
37
38inline QImage styleCacheImage(const QSize &size)
39{
40 const qreal pixelRatio = qApp->devicePixelRatio();
41 QImage cacheImage = QImage(size * pixelRatio, QImage::Format_ARGB32_Premultiplied);
42 cacheImage.setDevicePixelRatio(pixelRatio);
43 return cacheImage;
44}
45
46inline QPixmap styleCachePixmap(const QSize &size)
47{
48 const qreal pixelRatio = qApp->devicePixelRatio();
49 QPixmap cachePixmap = QPixmap(size * pixelRatio);
50 cachePixmap.setDevicePixelRatio(pixelRatio);
51 return cachePixmap;
52}
53
54#define BEGIN_STYLE_PIXMAPCACHE(a)
55 QRect rect = option->rect;
56 QPixmap internalPixmapCache;
57 QImage imageCache;
58 QPainter *p = painter;
59 QString unique = QStyleHelper::uniqueName((a), option, option->rect.size());
60 int txType = painter->deviceTransform().type() | painter->worldTransform().type();
61 bool doPixmapCache = (!option->rect.isEmpty())
62 && ((txType <= QTransform::TxTranslate) || (painter->deviceTransform().type() == QTransform::TxScale));
63 if (doPixmapCache && QPixmapCache::find(unique, &internalPixmapCache)) {
64 painter->drawPixmap(option->rect.topLeft(), internalPixmapCache);
65 } else {
66 if (doPixmapCache) {
67 rect.setRect(0, 0, option->rect.width(), option->rect.height());
68 imageCache = styleCacheImage(option->rect.size());
69 imageCache.fill(0);
70 p = new QPainter(&imageCache);
71 }
72
73#define END_STYLE_PIXMAPCACHE
74 if (doPixmapCache) {
75 p->end();
76 delete p;
77 internalPixmapCache = QPixmap::fromImage(imageCache);
78 painter->drawPixmap(option->rect.topLeft(), internalPixmapCache);
79 QPixmapCache::insert(unique, internalPixmapCache);
80 }
81 }
82
83} // namespace QQC2
84
85QT_END_NAMESPACE
86
87#endif // QQC2QSTYLE_P_P_H
virtual void polish()
const QStyle * proxy() const
virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt=nullptr) const =0
virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
virtual QPalette standardPalette() const
virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const =0
static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment)
virtual int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr) const =0
virtual void handleThemeChange()
virtual ~QStyle()
@ SC_TitleBarContextHelpButton
virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const =0
virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const
@ SE_DateTimeEditLayoutItem
@ SE_TabBarTearIndicatorRight
@ SE_DockWidgetTitleBarText
@ SE_TabBarScrollLeftButton
@ SE_ItemViewItemDecoration
@ SE_TabBarScrollRightButton
@ SE_TreeViewDisclosureItem
@ SE_TabBarTearIndicatorLeft
@ SE_ItemViewItemCheckIndicator
virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const =0
virtual QFont font(ControlElement element, const QStyle::State state) const =0
static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle)
virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const =0
static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown=false)
virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const =0
@ RSIP_OnMouseClickAndAlreadyFocused
static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect)
virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const =0
static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown=false)
virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const =0
@ SH_Menu_SpaceActivatesItem
@ SH_MenuBar_AltKeyNavigation
@ SH_Slider_StopMouseOverSlider
@ SH_TitleBar_ModifyNotification
@ SH_DialogButtonBox_ButtonsHaveIcons
@ SH_FontDialog_SelectAssociatedText
@ SH_TabBar_SelectMouseType
@ SH_Menu_SubMenuSloppyCloseTimeout
@ SH_ItemView_EllipsisLocation
@ SH_BlinkCursorWhenTextSelected
@ SH_LineEdit_PasswordMaskDelay
@ SH_ScrollBar_ScrollWhenPointerLeavesControl
@ SH_ComboBox_UseNativePopup
@ SH_ToolBox_SelectedPageTitleBold
@ SH_Slider_AbsoluteSetButtons
@ SH_ItemView_ArrowKeysNavigateIntoChildren
@ SH_ItemView_MovementWithoutUpdatingSelection
@ SH_Menu_FillScreenWithScroll
@ SH_TitleBar_ShowToolTipsOnButtons
@ SH_ItemView_ChangeHighlightOnFocus
@ SH_Widget_ShareActivation
@ SH_RichText_FullWidthSelection
@ SH_GroupBox_TextLabelColor
@ SH_ScrollView_FrameOnlyAroundContents
@ SH_FormLayoutLabelAlignment
@ SH_ScrollBar_RollBetweenButtons
@ SH_TabWidget_DefaultTabPosition
@ SH_Menu_AllowActiveAndDisabled
@ SH_Workspace_FillSpaceOnMaximize
@ SH_GroupBox_TextLabelVerticalAlignment
@ SH_Menu_FlashTriggeredItem
@ SH_MessageBox_TextInteractionFlags
@ SH_ItemView_ShowDecorationSelected
@ SH_ProgressDialog_CenterCancelButton
@ SH_ComboBox_LayoutDirection
@ SH_Slider_SloppyKeyEvents
@ SH_ProgressDialog_TextLabelAlignment
@ SH_PrintDialog_RightAlignButtons
@ SH_RequestSoftwareInputPanel
@ SH_ToolTip_FallAsleepDelay
@ SH_ItemView_ActivateItemOnSingleClick
@ SH_SpinBox_ClickAutoRepeatThreshold
@ SH_ComboBox_PopupFrameStyle
@ SH_ComboBox_ListMouseTracking
@ SH_FormLayoutFormAlignment
@ SH_TextControl_FocusIndicatorTextCharFormat
@ SH_DialogButtons_DefaultButton
@ SH_Menu_SubMenuUniDirectionFailCount
@ SH_ListViewExpand_SelectMouseType
@ SH_FormLayoutFieldGrowthPolicy
@ SH_SpellCheckUnderlineStyle
@ SH_SpinBox_ButtonsInsideFrame
@ SH_ScrollBar_LeftClickAbsolutePosition
@ SH_MessageBox_UseBorderForButtonSpacing
@ SH_TabBar_CloseButtonPosition
@ SH_Menu_SubMenuSloppySelectOtherActions
@ SH_MessageBox_CenterButtons
@ SH_MainWindow_SpaceBelowMenuBar
@ SH_DockWidget_ButtonsHaveFrame
@ SH_SpinBox_ClickAutoRepeatRate
@ SH_ScrollBar_MiddleClickAbsolutePosition
@ SH_FocusFrame_AboveWidget
@ SH_Widget_Animation_Duration
@ SH_SpinControls_DisableOnBounds
@ SH_ItemView_DrawDelegateFrame
@ SH_ComboBox_AllowWheelScrolling
@ SH_Menu_SubMenuDontStartSloppyOnLeave
@ SH_TabBar_ChangeCurrentDelay
@ SH_LineEdit_PasswordCharacter
@ SH_Menu_SubMenuResetWhenReenteringParent
@ SH_Menu_SubMenuUniDirection
@ SH_SpinBox_KeyPressAutoRepeatRate
@ SH_Menu_SubMenuPopupDelay
@ SH_ItemView_PaintAlternatingRowColorsForEmptyArea
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt=nullptr, QStyleHintReturn *returnData=nullptr) const =0
@ State_KeyboardFocusChange
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr) const =0
virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole=QPalette::NoRole) const
@ SP_TitleBarContextHelpButton
@ SP_FileDialogDetailedView
@ SP_FileDialogContentsView
@ SP_ToolBarVerticalExtensionButton
@ SP_ToolBarHorizontalExtensionButton
virtual QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const =0
virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const =0
virtual QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const =0
static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos)
QPixmap styleCachePixmap(const QSize &size)
QImage styleCacheImage(const QSize &size)
Combined button and popup list for selecting options.