5#ifndef QWINDOWSVISTASTYLE_P_P_H
6#define QWINDOWSVISTASTYLE_P_P_H
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
22#include <private/qfonticonengine_p.h>
23#include <private/qpaintengine_raster_p.h>
24#include <qpaintengine.h>
26#include <qapplication.h>
27#include <qpixmapcache.h>
28#include <qstyleoption.h>
29#include <QtWidgets/private/qwindowsstyle_p_p.h>
30#include <QtCore/private/qflatmap_p.h>
32#if QT_CONFIG(pushbutton)
33#include <qpushbutton.h>
35#include <qradiobutton.h>
36#if QT_CONFIG(lineedit)
40#if QT_CONFIG(toolbutton)
41#include <qtoolbutton.h>
49#if QT_CONFIG(combobox)
52#if QT_CONFIG(scrollbar)
53#include <qscrollbar.h>
55#if QT_CONFIG(progressbar)
56#include <qprogressbar.h>
58#if QT_CONFIG(dockwidget)
59#include <qdockwidget.h>
61#if QT_CONFIG(listview)
64#if QT_CONFIG(treeview)
68#include <qmessagebox.h>
69#if QT_CONFIG(dialogbuttonbox)
70#include <qdialogbuttonbox.h>
72#if QT_CONFIG(inputdialog)
73#include <qinputdialog.h>
75#if QT_CONFIG(tableview)
76#include <qtableview.h>
79#if QT_CONFIG(commandlinkbutton)
80#include <qcommandlinkbutton.h>
83#include <qheaderview.h>
90 Q_DECLARE_PUBLIC(QWindowsVistaStyle)
128 static bool useVista(
bool update =
false);
132 void init(
bool force =
false);
133 void cleanup(
bool force =
false);
143 bool drawBackground(QWindowsThemeData &QWindowsThemeData, qreal correctionFactor = 1);
145 bool drawBackgroundDirectly(HDC dc, QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio);
167 static bool initVistaTreeViewTheming(
const QScreen *screen);
168 static void cleanupVistaTreeViewTheming();
170 static QBasicAtomicInt ref;
171 static bool useVistaTheme;
173 QHash<ThemeMapKey, ThemeMapData> alphaCache;
174 HDC bufferDC =
nullptr;
175 HBITMAP bufferBitmap =
nullptr;
176 HBITMAP nullBitmap =
nullptr;
177 uchar *bufferPixels =
nullptr;
181 static QVarLengthFlatMap<
const QScreen *, HWND, 4> m_vistaTreeViewHelpers;
192 void paint(
QPainter *painter,
const QRect &rect, QIcon::Mode mode, QIcon::State state)
override;
The QWindows11Style class provides a look and feel suitable for applications on Microsoft Windows 11.
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
void polish(QWidget *widget) override
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const override
QWindows11Style(QWindows11StylePrivate &dd)
void polish(QPalette &pal) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget=nullptr) const override
~QWindows11Style() override
Destructor.
HBITMAP buffer(int w=0, int h=0)
static int fixedPixelMetric(QStyle::PixelMetric pm)
static HDC hdcForWidgetBackingStore(const QWidget *widget)
static QBackingStore * backingStoreForWidget(const QWidget *widget)
bool swapAlphaChannel(const QRect &rect, bool allPixels=false)
bool drawBackgroundThruNativeBuffer(QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio, qreal correctionFactor)
static HWND winId(const QWidget *widget)
void init(bool force=false)
static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget)
bool transitionsEnabled() const
bool drawBackgroundDirectly(HDC dc, QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio)
static bool isItemViewDelegateLineEdit(const QWidget *widget)
static bool useVista(bool update=false)
QRgb groupBoxTextColorDisabled
bool fixAlphaChannel(const QRect &rect)
QIcon m_titleBarCloseIcon
void cleanup(bool force=false)
QWindowsVistaStylePrivate()
bool isTransparent(QWindowsThemeData &QWindowsThemeData)
bool hasAlphaChannel(const QRect &rect)
QIcon m_titleBarNormalIcon
QRegion region(QWindowsThemeData &QWindowsThemeData)
QTime animationTime() const
~QWindowsVistaStylePrivate()
bool drawBackground(QWindowsThemeData &QWindowsThemeData, qreal correctionFactor=1)
static HTHEME createTheme(int theme, const QWidget *widget)
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option=nullptr, const QWidget *widget=nullptr)
static QString themeName(int theme)
The QWindowsVistaStyle class provides a look and feel suitable for applications on Microsoft Windows ...
QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const override
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget=nullptr) const override
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void polish(QWidget *widget) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget=nullptr) const override
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
\reimp
~QWindowsVistaStyle() override
Destructor.
void polish(QPalette &pal) override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget=nullptr) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QWindowsVistaStyle(QWindowsVistaStylePrivate &dd)
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
QString string() const override
void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override
Uses the given painter to paint the icon with the required mode and state into the rectangle rect.
QString key() const override
\variable QIconEngine::ScaledPixmapArgument::size
QIconEngine * clone() const override
Reimplement this method to return a clone of this icon engine.
WinFontIconEngine(const QChar &glyph, const QFont &font)
@ fillControlAltSecondary
@ frameColorStrongDisabled
@ controlStrokeOnAccentSecondary
@ fillControlAltQuarternary