QSlider显示最小值,最大值和当前值

Bor*_*oro 5 c++ qt qslider

是否可以显示QSlider的最小,最大和当前选定值?当然我可以使用标签来显示它,但我认为在QSlider中肯定存在这种可能性

evi*_*uff 9

你有两个选择..

1)在评论中提到 - 子类

2)使用QSlider作为项添加尽可能多的QLabel ,在QSlider上安装eventHandler()以捕获resize事件以正确定位它们,并且显然处理滚动事件,因此您可以更新它们...所以标签将浮动QSlider的顶部


小智 8

这是我对一个花哨的滑块的快速实现,它是 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
Run Code Online (Sandbox Code Playgroud)

总价

#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);
    }
}
Run Code Online (Sandbox Code Playgroud)