Qt的QSlider控件默认只能显示整数值,如果想要显示小数,可以通过以下方法实现:

  1. 扩展QSlider控件:继承QSlider类,重写paintEvent()方法,在绘制滑块时将整数值转换为小数值进行绘制。
class DecimalSlider : public QSlider
{
    Q_OBJECT
public:
    DecimalSlider(QWidget* parent = nullptr) : QSlider(parent) {}

protected:
    void paintEvent(QPaintEvent* event) override
    {
        QSlider::paintEvent(event);

        QPainter painter(this);
        painter.setPen(Qt::black);

        qreal value = static_cast<qreal>(this->value()) / this->maximum();
        QString text = QString::number(value, 'f', 2); // 将小数值保留两位小数
        painter.drawText(rect(), Qt::AlignCenter, text);
    }
};
  1. 使用QSlider的valueChanged()信号和QLabel控件来显示小数值。
QSlider* slider = new QSlider(Qt::Horizontal);
QLabel* label = new QLabel();
QObject::connect(slider, &QSlider::valueChanged, [=](int value) {
    qreal decimalValue = static_cast<qreal>(value) / slider->maximum();
    label->setText(QString::number(decimalValue, 'f', 2));
});

这两种方法都可以实现在QSlider控件上显示小数值,可以根据实际需求选择使用

qt的qslider显示小数

原文地址: http://www.cveoy.top/t/topic/iR0v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录