This commit is contained in:
laserpants 2016-05-04 23:44:33 +03:00
parent 55ee28ff97
commit 24461cddd5
4 changed files with 46 additions and 8 deletions

View File

@ -40,6 +40,7 @@ void Slider::paintEvent(QPaintEvent *event)
QPainter painter(this); QPainter painter(this);
d->paintTrack(&painter); d->paintTrack(&painter);
d->paintHalo(&painter);
d->paintThumb(&painter); d->paintThumb(&painter);
#ifdef DEBUG_LAYOUT #ifdef DEBUG_LAYOUT
@ -65,7 +66,7 @@ void Slider::mouseMoveEvent(QMouseEvent *event)
setSliderPosition(d->valueFromPosition(event->pos())); setSliderPosition(d->valueFromPosition(event->pos()));
} else { } else {
QRect track(d->trackGeometry().adjusted(-2, -2, 2, 2)); QRectF track(d->trackGeometry().adjusted(-2, -2, 2, 2));
if (track.contains(event->pos()) != d->hoverTrack) { if (track.contains(event->pos()) != d->hoverTrack) {
d->hoverTrack = !d->hoverTrack; d->hoverTrack = !d->hoverTrack;
@ -98,7 +99,7 @@ void Slider::mousePressEvent(QMouseEvent *event)
return; return;
} }
QRect track(d->trackGeometry().adjusted(-2, -2, 2, 2)); QRectF track(d->trackGeometry().adjusted(-2, -2, 2, 2));
if (track.contains(pos)) { if (track.contains(pos)) {
d->step = true; d->step = true;

View File

@ -5,7 +5,7 @@
#include <QPainter> #include <QPainter>
#include "lib/style.h" #include "lib/style.h"
#define THUMB_OUTER_SIZE 30 #define THUMB_OUTER_SIZE 35
class SliderPrivate class SliderPrivate
{ {
@ -23,14 +23,14 @@ public:
parent->setMouseTracking(true); parent->setMouseTracking(true);
} }
QRect trackGeometry() const QRectF trackGeometry() const
{ {
Q_Q(const Slider); Q_Q(const Slider);
return Qt::Horizontal == q->orientation() return Qt::Horizontal == q->orientation()
? QRect(THUMB_OUTER_SIZE/2, q->rect().height()/2 - 1, ? QRectF(THUMB_OUTER_SIZE/2, q->rect().height()/2 - 1,
q->rect().width() - THUMB_OUTER_SIZE, 2) q->rect().width() - THUMB_OUTER_SIZE, 2)
: QRect(q->rect().width()/2 - 1, THUMB_OUTER_SIZE/2, 2, : QRectF(q->rect().width()/2 - 1, THUMB_OUTER_SIZE/2, 2,
q->rect().height() - THUMB_OUTER_SIZE); q->rect().height() - THUMB_OUTER_SIZE);
} }
@ -78,6 +78,26 @@ public:
THUMB_OUTER_SIZE, THUMB_OUTER_SIZE); THUMB_OUTER_SIZE, THUMB_OUTER_SIZE);
} }
void paintHalo(QPainter *painter)
{
painter->save();
QBrush brush;
brush.setStyle(Qt::SolidPattern);
brush.setColor(QColor(0, 0, 0, 20));
painter->setBrush(brush);
painter->setPen(Qt::NoPen);
painter->setRenderHint(QPainter::Antialiasing);
QRectF halo(0, 0, THUMB_OUTER_SIZE, THUMB_OUTER_SIZE);
halo.moveCenter(thumbGeometry().center());
painter->drawEllipse(halo);
painter->restore();
}
void paintThumb(QPainter *painter) void paintThumb(QPainter *painter)
{ {
painter->save(); painter->save();
@ -89,7 +109,7 @@ public:
painter->setRenderHint(QPainter::Antialiasing); painter->setRenderHint(QPainter::Antialiasing);
QRectF thumb(0, 0, 12, 12); QRectF thumb(0, 0, 11, 11);
thumb.moveCenter(thumbGeometry().center()); thumb.moveCenter(thumbGeometry().center());
painter->drawEllipse(thumb); painter->drawEllipse(thumb);

View File

@ -131,6 +131,23 @@ SliderExamples::SliderExamples(QWidget *parent)
_slider2->setTracking(false); _slider2->setTracking(false);
} }
{
Slider *slider = new Slider;
slider->setDisabled(true);
slider->setMinimumWidth(250);
ExampleView *view = new ExampleView;
view->setWidget(slider);
Frame *frame = new Frame;
frame->setCodeSnippet(
"Slider *slider = new Slider;\n"
"slider->setDisabled(true);\n"
);
frame->setWidget(view);
mainLayout->addWidget(frame);
}
} }

View File

@ -5,7 +5,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qt-material-widgets TARGET = qt-material-widgets
TEMPLATE = app TEMPLATE = app
DEFINES += DEBUG_LAYOUT=1 #DEFINES += DEBUG_LAYOUT=1
SOURCES += main.cpp\ SOURCES += main.cpp\
mainwindow.cpp \ mainwindow.cpp \