当前位置:   article > 正文

QSlider change with double values(Qt滑动进度条显示小数)_qt中的slider控件如何实现步长为小数

qt中的slider控件如何实现步长为小数

1.需求

QSlider自带的信号是valueChanged(int),显示单元自带的也都是传入int类型参数的槽函数,比如LCD Number的槽函数为display(int),Label的槽函数为setNum(int).
对此,看到stackoverflow的一个回答,他的做法是建立一个DoubleSlider的类,继承QSlider,目的是让DoubleSlider类产生double类型的信号:void doubleValueChanged(double value);然后在主函数创建一个double类型的全局槽函数就行了.

2.思考

我的思考是,我不想改变Slider自身的信号valueChanged(int),因为ui.h是由qt designer界面设计自动生成,每次改完界面都要改ui.h很麻烦。
既然可以改信号,就可以改槽函数。创建一个槽函数如下,int类型传入,在程序内部进行运算,显示运算结果(就是你想要的小数),这样就避免使用label自带的槽函数setNum(int).

void PCLViewer::updateLabelValue(int value)
{
    double doublevalue = value/100.0;
    ui->label_1->setText(QString::number(doublevalue, 'f', 2));
}
  • 1
  • 2
  • 3
  • 4
  • 5

将QSlider的信号valueChanged(int)与槽函数updateLabelValue(int)链接.

connect (ui->Slider, SIGNAL(valueChanged (int)), this, SLOT(updateLabelValue(int)));
  • 1

3.效果

这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/233189
推荐阅读
相关标签
  

闽ICP备14008679号