From dcef5d8ba571516114598ca17050dced19a573ef Mon Sep 17 00:00:00 2001 From: laserpants Date: Tue, 22 Mar 2016 18:05:02 +0300 Subject: [PATCH] add slider example for vertical slider --- components/slider.cpp | 35 ++++++++++++++++++++++++++++++++++- components/slider.h | 18 ++++++++++++++++++ examples/sliderexamples.cpp | 19 +++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/components/slider.cpp b/components/slider.cpp index fb96089..446dd28 100644 --- a/components/slider.cpp +++ b/components/slider.cpp @@ -1,10 +1,43 @@ +#include #include "slider.h" -Slider::Slider(QWidget *parent) +Handle::Handle(QWidget *parent) : QWidget(parent) { } +Handle::~Handle() +{ +} + +void Handle::paintEvent(QPaintEvent *event) +{ + QPainter painter(this); + QPen pen; + pen.setColor(Qt::black); + pen.setWidth(1); + painter.setPen(pen); + painter.drawRect(rect().adjusted(0, 0, -1, -1)); + + QWidget::paintEvent(event); +} + +Slider::Slider(QWidget *parent) + : QWidget(parent), + _handle(new Handle(this)) +{ + _handle->setGeometry(10, 10, 30, 30); +} + Slider::~Slider() { } + +void Slider::paintEvent(QPaintEvent *event) +{ + QPainter painter(this); + + painter.drawRect(rect().adjusted(0, 0, -1, -1)); + + QWidget::paintEvent(event); +} diff --git a/components/slider.h b/components/slider.h index 3bcbfbd..32aeb99 100644 --- a/components/slider.h +++ b/components/slider.h @@ -3,6 +3,18 @@ #include +class Handle : public QWidget +{ + Q_OBJECT + +public: + explicit Handle(QWidget *parent = 0); + ~Handle(); + +protected: + void paintEvent(QPaintEvent *event); +}; + class Slider : public QWidget { Q_OBJECT @@ -10,6 +22,12 @@ class Slider : public QWidget public: explicit Slider(QWidget *parent = 0); ~Slider(); + +protected: + void paintEvent(QPaintEvent *event); + +private: + Handle *const _handle; }; #endif // SLIDER_H diff --git a/examples/sliderexamples.cpp b/examples/sliderexamples.cpp index 424619c..87e4e1e 100644 --- a/examples/sliderexamples.cpp +++ b/examples/sliderexamples.cpp @@ -28,6 +28,25 @@ SliderExamples::SliderExamples(QWidget *parent) mainLayout->addWidget(frame); } + { + QWidget *widget = new QWidget; + QVBoxLayout *layout = new QVBoxLayout; + + widget->setLayout(layout); + + Slider *slider = new Slider; + + ExampleView *view = new ExampleView; + view->setWidget(slider); + + Frame *frame = new Frame; + frame->setCodeSnippet( + "---" + ); + frame->setWidget(view); + + mainLayout->addWidget(frame); + } } SliderExamples::~SliderExamples()