#include class MySlider : public QSlider { public: using QSlider::QSlider; void initStyleOption(QStyleOptionSlider* option) const override { QSlider::initStyleOption(option); if (m_adjustRect) { const auto w = option->rect.width() / 10.; const auto h = option->rect.height() / 10.; if (option->orientation == Qt::Horizontal) option->rect.adjust(w, 0, -2 * w, 0); else option->rect.adjust(0, h, 0, -2 * h); } } bool m_adjustRect = true; }; int main(int argc, char** argv) { // call with '-style windows' and also '-reverse' to test all QApplication app(argc, argv); QWidget w; QGridLayout* lay = new QGridLayout(&w); { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Horizontal); slider->setTickPosition(QSlider::TicksAbove); lay->addWidget(slider, 0, 0); } { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Horizontal); slider->setTickPosition(QSlider::TicksBelow); lay->addWidget(slider, 0, 1); } { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Horizontal); slider->setTickPosition(QSlider::TicksBothSides); lay->addWidget(slider, 0, 2); } { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Vertical); slider->setTickPosition(QSlider::TicksLeft); lay->addWidget(slider, 2, 0); } { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Vertical); slider->setTickPosition(QSlider::TicksRight); lay->addWidget(slider, 2, 1); } { QSlider* slider = new MySlider; slider->setRange(0, 100); slider->setOrientation(Qt::Vertical); slider->setTickPosition(QSlider::TicksBothSides); lay->addWidget(slider, 2, 2); } w.show(); return app.exec(); }