Use QStylePainter when painting widgets

This makes it easier to set global painter options
which affect all style painting.

Change-Id: I6a38204ed2d874255e92345e6a6a50d27939fb24
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Morten Johan Sørvig 2022-01-18 13:38:45 +01:00
parent 321e51d926
commit 3ad4fff7d5
5 changed files with 15 additions and 11 deletions

View File

@ -51,6 +51,7 @@
#include <qlayout.h> #include <qlayout.h>
#include <qset.h> #include <qset.h>
#include <qstyle.h> #include <qstyle.h>
#include <qstylepainter.h>
#if QT_CONFIG(timezone) #if QT_CONFIG(timezone)
#include <QTimeZone> #include <QTimeZone>
#endif #endif
@ -2441,8 +2442,8 @@ void QDateTimeEdit::paintEvent(QPaintEvent *event)
optCombo.state &= ~QStyle::State_Enabled; optCombo.state &= ~QStyle::State_Enabled;
} }
QPainter p(this); QStylePainter p(this);
style()->drawComplexControl(QStyle::CC_ComboBox, &optCombo, &p, this); p.drawComplexControl(QStyle::CC_ComboBox, optCombo);
} }
int QDateTimeEditPrivate::absoluteIndex(QDateTimeEdit::Section s, int index) const int QDateTimeEditPrivate::absoluteIndex(QDateTimeEdit::Section s, int index) const

View File

@ -219,7 +219,7 @@ void QDockWidgetTitleButton::leaveEvent(QEvent *event)
void QDockWidgetTitleButton::paintEvent(QPaintEvent *) void QDockWidgetTitleButton::paintEvent(QPaintEvent *)
{ {
QPainter p(this); QStylePainter p(this);
QStyleOptionToolButton opt; QStyleOptionToolButton opt;
opt.initFrom(this); opt.initFrom(this);
@ -232,7 +232,7 @@ void QDockWidgetTitleButton::paintEvent(QPaintEvent *)
opt.state |= QStyle::State_On; opt.state |= QStyle::State_On;
if (isDown()) if (isDown())
opt.state |= QStyle::State_Sunken; opt.state |= QStyle::State_Sunken;
style()->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, &p, this); p.drawPrimitive(QStyle::PE_PanelButtonTool, opt);
} else if (isDown() || isChecked()) { } else if (isDown() || isChecked()) {
// no frame, but the icon might have explicit pixmaps for QIcon::On // no frame, but the icon might have explicit pixmaps for QIcon::On
opt.state |= QStyle::State_On | QStyle::State_Sunken; opt.state |= QStyle::State_On | QStyle::State_Sunken;
@ -244,7 +244,7 @@ void QDockWidgetTitleButton::paintEvent(QPaintEvent *)
opt.features = QStyleOptionToolButton::None; opt.features = QStyleOptionToolButton::None;
opt.arrowType = Qt::NoArrow; opt.arrowType = Qt::NoArrow;
opt.iconSize = dockButtonIconSize(); opt.iconSize = dockButtonIconSize();
style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &p, this); p.drawComplexControl(QStyle::CC_ToolButton, opt);
} }
/****************************************************************************** /******************************************************************************

View File

@ -44,6 +44,7 @@
#include "qpainter.h" #include "qpainter.h"
#include "qstyle.h" #include "qstyle.h"
#include "qstyleoption.h" #include "qstyleoption.h"
#include "qstylepainter.h"
#include "qapplication.h" #include "qapplication.h"
#include "qframe_p.h" #include "qframe_p.h"
@ -511,8 +512,8 @@ QSize QFrame::sizeHint() const
void QFrame::paintEvent(QPaintEvent *) void QFrame::paintEvent(QPaintEvent *)
{ {
QPainter paint(this); QStylePainter p(this);
drawFrame(&paint); drawFrame(&p);
} }
/*! /*!

View File

@ -44,6 +44,7 @@
#include "qscrollbar.h" #include "qscrollbar.h"
#include "qstyle.h" #include "qstyle.h"
#include "qstyleoption.h" #include "qstyleoption.h"
#include "qstylepainter.h"
#if QT_CONFIG(menu) #if QT_CONFIG(menu)
#include "qmenu.h" #include "qmenu.h"
#endif #endif
@ -525,7 +526,7 @@ void QScrollBar::wheelEvent(QWheelEvent *event)
void QScrollBar::paintEvent(QPaintEvent *) void QScrollBar::paintEvent(QPaintEvent *)
{ {
Q_D(QScrollBar); Q_D(QScrollBar);
QPainter p(this); QStylePainter p(this);
QStyleOptionSlider opt; QStyleOptionSlider opt;
initStyleOption(&opt); initStyleOption(&opt);
opt.subControls = QStyle::SC_All; opt.subControls = QStyle::SC_All;
@ -536,7 +537,7 @@ void QScrollBar::paintEvent(QPaintEvent *)
} else { } else {
opt.activeSubControls = (QStyle::SubControl)d->hoverControl; opt.activeSubControls = (QStyle::SubControl)d->hoverControl;
} }
style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, &p, this); p.drawComplexControl(QStyle::CC_ScrollBar, opt);
} }
/*! /*!

View File

@ -46,6 +46,7 @@
#include "qpainter.h" #include "qpainter.h"
#include "qstyle.h" #include "qstyle.h"
#include "qstyleoption.h" #include "qstyleoption.h"
#include "qstylepainter.h"
#include "private/qapplication_p.h" #include "private/qapplication_p.h"
#include "private/qabstractslider_p.h" #include "private/qabstractslider_p.h"
#include "qdebug.h" #include "qdebug.h"
@ -317,7 +318,7 @@ QSlider::~QSlider()
void QSlider::paintEvent(QPaintEvent *) void QSlider::paintEvent(QPaintEvent *)
{ {
Q_D(QSlider); Q_D(QSlider);
QPainter p(this); QStylePainter p(this);
QStyleOptionSlider opt; QStyleOptionSlider opt;
initStyleOption(&opt); initStyleOption(&opt);
@ -325,7 +326,7 @@ void QSlider::paintEvent(QPaintEvent *)
if (d->tickPosition != NoTicks) if (d->tickPosition != NoTicks)
opt.subControls |= QStyle::SC_SliderTickmarks; opt.subControls |= QStyle::SC_SliderTickmarks;
style()->drawComplexControl(QStyle::CC_Slider, &opt, &p, this); p.drawComplexControl(QStyle::CC_Slider, opt);
} }
/*! /*!