add halo
This commit is contained in:
parent
55ee28ff97
commit
24461cddd5
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
Loading…
Reference in New Issue