From 90dd4cdf25b344418e77ab03eb4746cea3ce86b5 Mon Sep 17 00:00:00 2001 From: muli Date: Sun, 16 Feb 2020 16:15:24 +0800 Subject: [PATCH] feat: Overriding the GUI's QScroll control skin --- QtMyStyleEx/QtExample02/QtStyleEx/mystyle.cpp | 78 +++++++------------ QtMyStyleEx/QtExample02/QtStyleEx/mystyle.h | 10 --- QtMyStyleEx/QtExample02/QtStyleEx/widget.cpp | 2 + 3 files changed, 31 insertions(+), 59 deletions(-) diff --git a/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.cpp b/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.cpp index 9d596b3..832f7ad 100644 --- a/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.cpp +++ b/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.cpp @@ -22,62 +22,42 @@ #include "mystyle.h" #include +#include +#include MyStyle::MyStyle() { } -void MyStyle::polish(QWidget *widget) -{ - QCommonStyle::polish(widget); -} - -void MyStyle::unpolish(QWidget *widget) -{ - QCommonStyle::unpolish(widget); -} - -void MyStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const -{ - QCommonStyle::drawPrimitive(pe, opt, p, w); -} - void MyStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const { + p->setRenderHint(QPainter::Antialiasing); + + switch (element) { + case CE_ScrollBarAddPage: { //增加滑槽 + p->fillRect(opt->rect, QColor("#bfe9ff")); + return; + } + case CE_ScrollBarSubPage: { //减少滑槽 + p->fillRect(opt->rect, QColor("#EC6EAD")); + return; + } + case CE_ScrollBarSlider: { //滑块 + p->fillRect(opt->rect, QColor("#A8BFFF")); + return; + } + case CE_ScrollBarAddLine: { //增加按钮 + p->fillRect(opt->rect, QColor("#21d4fd")); + return; + } + case CE_ScrollBarSubLine: { //减少按钮 + p->fillRect(opt->rect, QColor("#de6161")); + return; + } + default: + break; + } + return QCommonStyle::drawControl(element, opt, p, w); } - -QRect MyStyle::subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget) const -{ - return QCommonStyle::subElementRect(subElement, option, widget); -} - -void MyStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const -{ - QCommonStyle::drawComplexControl(cc, opt, p, widget); -} - -QRect MyStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const -{ - return QCommonStyle::subControlRect(cc, opt, sc, widget); -} - -int MyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const -{ - return QCommonStyle::pixelMetric(metric, option, widget); -} - -QSize MyStyle::sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const -{ - return QCommonStyle::sizeFromContents(ct, opt, contentsSize, w); -} - -int MyStyle::styleHint(QStyle::StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const -{ - return QCommonStyle::styleHint(stylehint, opt, widget, returnData); -} - - - - diff --git a/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.h b/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.h index acf8031..44874ac 100644 --- a/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.h +++ b/QtMyStyleEx/QtExample02/QtStyleEx/mystyle.h @@ -31,17 +31,7 @@ public: // QStyle interface public: - virtual void polish(QWidget *widget) override; - virtual void unpolish(QWidget *widget) override; - virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const override; virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const override; - virtual QRect subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget) const override; - virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const override; - virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override; - virtual int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const override; - virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const override; - virtual int styleHint(StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const override; - }; #endif // MYSTYLE_H diff --git a/QtMyStyleEx/QtExample02/QtStyleEx/widget.cpp b/QtMyStyleEx/QtExample02/QtStyleEx/widget.cpp index 57b1e25..0bf5349 100644 --- a/QtMyStyleEx/QtExample02/QtStyleEx/widget.cpp +++ b/QtMyStyleEx/QtExample02/QtStyleEx/widget.cpp @@ -44,6 +44,8 @@ Widget::~Widget() void Widget::init() { + resize(1000, 600); + QTableWidget *table = new QTableWidget(10, 10, this); table->move(10, 10);