File indexing completed on 2026-09-12 09:23:46
0001
0002
0003
0004
0005 #ifndef QSTYLEPAINTER_H
0006 #define QSTYLEPAINTER_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtGui/qpainter.h>
0010 #include <QtWidgets/qstyle.h>
0011 #include <QtWidgets/qwidget.h>
0012
0013 QT_BEGIN_NAMESPACE
0014
0015
0016 class QStylePainter : public QPainter
0017 {
0018 public:
0019 inline QStylePainter() : QPainter(), widget(nullptr), wstyle(nullptr) {}
0020 inline explicit QStylePainter(QWidget *w) { begin(w, w); }
0021 inline QStylePainter(QPaintDevice *pd, QWidget *w) { begin(pd, w); }
0022 inline bool begin(QWidget *w) { return begin(w, w); }
0023 inline bool begin(QPaintDevice *pd, QWidget *w) {
0024 Q_ASSERT_X(w, "QStylePainter::QStylePainter", "Widget must be non-zero");
0025 widget = w;
0026 wstyle = w->style();
0027 const bool res = QPainter::begin(pd);
0028 setRenderHint(QPainter::SmoothPixmapTransform);
0029 return res;
0030 }
0031 inline void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt);
0032 inline void drawControl(QStyle::ControlElement ce, const QStyleOption &opt);
0033 inline void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt);
0034 inline void drawItemText(const QRect &r, int flags, const QPalette &pal, bool enabled,
0035 const QString &text, QPalette::ColorRole textRole = QPalette::NoRole);
0036 inline void drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap);
0037 inline QStyle *style() const { return wstyle; }
0038
0039 private:
0040 QWidget *widget;
0041 QStyle *wstyle;
0042 Q_DISABLE_COPY(QStylePainter)
0043 };
0044
0045 void QStylePainter::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt)
0046 {
0047 wstyle->drawPrimitive(pe, &opt, this, widget);
0048 }
0049
0050 void QStylePainter::drawControl(QStyle::ControlElement ce, const QStyleOption &opt)
0051 {
0052 wstyle->drawControl(ce, &opt, this, widget);
0053 }
0054
0055 void QStylePainter::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt)
0056 {
0057 wstyle->drawComplexControl(cc, &opt, this, widget);
0058 }
0059
0060 void QStylePainter::drawItemText(const QRect &r, int flags, const QPalette &pal, bool enabled,
0061 const QString &text, QPalette::ColorRole textRole)
0062 {
0063 wstyle->drawItemText(this, r, flags, pal, enabled, text, textRole);
0064 }
0065
0066 void QStylePainter::drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap)
0067 {
0068 wstyle->drawItemPixmap(this, r, flags, pixmap);
0069 }
0070
0071 QT_END_NAMESPACE
0072
0073 #endif