Qt水平滑块发送浮点值

2024-04-28 22:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用qt水平滑块发送一个浮点值“step”,我正在尝试,但它不起作用:

    horizontalSlider.setRange(0,25)
    horizontalSlider.setSingleStep(horizontalSlider.maximum()/100.0)
    horizontalSlider.valueChanged.connect(self.valueHandler)

然后我得到了这里的值:

    def valueHandler(self,value):    
        print value

但是,得到的输出是1,2,3,4,5,6,7,8。。。。。。。


Tags: selfvaluedefstepconnect水平qt浮点
2条回答

Qt silders只能有整数值。你需要改变你的测量单位,这样整数精度就足够了。例如,通常100个滑块位置就足够了。因此,您需要设置(0,100)滑块范围并缩放浮点值,以便将最小值转换为0,将最大值转换为100(即将浮点值转换为百分比)。

如果希望保持主代码的干净,可以创建Qt slider的子类并在内部实现所描述的逻辑。

因为您希望单步是25/100=0.25,所以您应该这样做:

horizontalSlider.setRange(0,100)
horizontalSlider.setSingleStep(1)
horizontalSlider.valueChanged.connect(self.valueHandler)

def valueHandler(self,value):   
    scaledValue = float(value)/4     #type of "value" is int so you need to convert it to float in order to get float type for "scaledValue" 
    print scaledValue , type(scaledValue)

相关问题 更多 >