From e17b6367b1045b77bf1020a0a7369bdd5e27caf4 Mon Sep 17 00:00:00 2001 From: laserpants Date: Wed, 11 May 2016 20:26:19 +0300 Subject: [PATCH] add property to change track width --- components/slider.cpp | 15 +++++++++++++++ components/slider.h | 4 ++++ components/slider_p.h | 10 +++++++--- examples/flatbuttonexamples.cpp | 19 +++++++++++++++++++ examples/sliderexamples.cpp | 14 ++++++++++++-- 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/components/slider.cpp b/components/slider.cpp index be7d084..13f2756 100644 --- a/components/slider.cpp +++ b/components/slider.cpp @@ -65,6 +65,21 @@ QColor Slider::trackColor() const return d->trackColor; } +void Slider::setTrackWidth(int width) +{ + Q_D(Slider); + + d->trackWidth = width; + update(); +} + +int Slider::trackWidth() const +{ + Q_D(const Slider); + + return d->trackWidth; +} + void Slider::sliderChange(SliderChange change) { Q_D(Slider); diff --git a/components/slider.h b/components/slider.h index d2b6268..e4d2108 100644 --- a/components/slider.h +++ b/components/slider.h @@ -11,6 +11,7 @@ class Slider : public QAbstractSlider Q_OBJECT Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor) + Q_PROPERTY(int trackWidth WRITE setTrackWidth READ trackWidth) public: explicit Slider(QWidget *parent = 0); @@ -26,6 +27,9 @@ public: void setTrackColor(const QColor &color); QColor trackColor() const; + void setTrackWidth(int width); + int trackWidth() const; + signals: void changedToMinimum(); void changedFromMinimum(); diff --git a/components/slider_p.h b/components/slider_p.h index fa2b3d8..865f7a4 100644 --- a/components/slider_p.h +++ b/components/slider_p.h @@ -38,6 +38,7 @@ public: bool pageStepMode; int stepTo; int oldValue; + int trackWidth; QColor trackColor; }; @@ -50,6 +51,7 @@ SliderPrivate::SliderPrivate(Slider *parent) pageStepMode(false), stepTo(0), oldValue(parent->value()), + trackWidth(2), trackColor(QColor(200, 200, 200)) { parent->setMouseTracking(true); @@ -218,10 +220,12 @@ QRectF SliderPrivate::trackGeometry() const { Q_Q(const Slider); + qreal hw = static_cast(trackWidth)/2; + return Qt::Horizontal == q->orientation() - ? QRectF(SLIDER_MARGIN, q->rect().height()/2 - 1, - q->rect().width() - SLIDER_MARGIN*2, 2) - : QRectF(q->rect().width()/2 - 1, SLIDER_MARGIN, 2, + ? QRectF(SLIDER_MARGIN, q->rect().height()/2 - hw, + q->rect().width() - SLIDER_MARGIN*2, hw*2) + : QRectF(q->rect().width()/2 - hw, SLIDER_MARGIN, hw*2, q->rect().height() - SLIDER_MARGIN*2); } diff --git a/examples/flatbuttonexamples.cpp b/examples/flatbuttonexamples.cpp index 849713a..e4de78a 100644 --- a/examples/flatbuttonexamples.cpp +++ b/examples/flatbuttonexamples.cpp @@ -1,4 +1,5 @@ #include +#include #include "flatbuttonexamples.h" #include "components/flatbutton.h" #include "exampleview.h" @@ -43,6 +44,24 @@ FlatButtonExamples::FlatButtonExamples(QWidget *parent) ); frame->setWidget(view); + layout->addWidget(frame); + } + { + QPushButton *flatButton = new QPushButton; + flatButton->setText("Press me!"); + flatButton->setIcon(QIcon("../qt-material-widgets/face.svg")); + flatButton->setMinimumSize(200, 50); + flatButton->setCheckable(true); + + ExampleView *view = new ExampleView; + view->setWidget(flatButton); + + Frame *frame = new Frame; + frame->setCodeSnippet( + "" + ); + frame->setWidget(view); + layout->addWidget(frame); } } diff --git a/examples/sliderexamples.cpp b/examples/sliderexamples.cpp index 41821e9..48ccd8c 100644 --- a/examples/sliderexamples.cpp +++ b/examples/sliderexamples.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "sliderexamples.h" #include "components/slider.h" @@ -198,24 +199,33 @@ SliderExamples::SliderExamples(QWidget *parent) widget->setLayout(layout); widget->setMinimumWidth(350); - Slider *slider = new Slider; + Slider *slider; + QHBoxLayout *hLayout; - QHBoxLayout *hLayout = new QHBoxLayout; + slider = new Slider; + + hLayout = new QHBoxLayout; + hLayout->addWidget(new QLabel("R")); hLayout->addWidget(slider); + hLayout->addWidget(new QLineEdit); layout->addLayout(hLayout); slider = new Slider; hLayout = new QHBoxLayout; + hLayout->addWidget(new QLabel("G")); hLayout->addWidget(slider); + hLayout->addWidget(new QLineEdit); layout->addLayout(hLayout); slider = new Slider; hLayout = new QHBoxLayout; + hLayout->addWidget(new QLabel("B")); hLayout->addWidget(slider); + hLayout->addWidget(new QLineEdit); layout->addLayout(hLayout);