QSlider показывает минимальное, максимальное и текущее значение

Можно ли показать минимальное, максимальное и текущее выбранное значение QSlider? Конечно, я могу использовать метки для отображения этого, но я думаю, что в QSlider должна быть такая возможность

4

Решение

У вас есть два варианта ..

1) как уже упоминалось в комментариях — подкласс

2) добавьте столько QLabel, сколько хотите с QSlider как родитель, установите eventHandler () на QSlider, чтобы перехватить событие resize, чтобы правильно расположить их, и, очевидно, обрабатывать события прокрутки, чтобы вы могли обновлять их … Так что метки будут просто плавать поверх QSlider

9

Другие решения

Вот моя быстрая реализация модного слайдера, который подкласса qslider отображает текущее значение чуть ниже маркера слайдера во всплывающей подсказке.

заголовок

#ifndef FANCYSLIDER_H
#define FANCYSLIDER_H

#include <QSlider>

class FancySlider : public QSlider
{
Q_OBJECT
public:
explicit FancySlider(QWidget *parent = 0);
explicit FancySlider(Qt::Orientation orientation, QWidget *parent = 0);

protected:
virtual void sliderChange(SliderChange change);
};

#endif // FANCYSLIDER_H

Cpp

#include "FancySlider.h"
#include <QStyleOptionSlider>
#include <QToolTip>

FancySlider::FancySlider(QWidget * parent)
: QSlider(parent)
{
}

FancySlider::FancySlider(Qt::Orientation orientation, QWidget * parent)
: QSlider(orientation, parent)
{
}

void FancySlider::sliderChange(QAbstractSlider::SliderChange change)
{
QSlider::sliderChange(change);

if (change == QAbstractSlider::SliderValueChange )
{
QStyleOptionSlider opt;
initStyleOption(&opt);

QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);
QPoint bottomRightCorner = sr.bottomLeft();

QToolTip::showText(mapToGlobal( QPoint( bottomRightCorner.x(), bottomRightCorner.y() ) ), QString::number(value()), this);
}
}
2

По вопросам рекламы [email protected]