Qt QSlider做了不必要的步骤

Qt QSlider做了不必要的步骤,qt,qslider,Qt,Qslider,我尝试使用QSlider,但是如果有人单击某个位置X,他想将滑块放在该位置,滑块总是先将值设置为最大值或最小值,然后再设置为值X。因此,在这两者之间有一个不必要的步骤。 如何避免这一步 我在QTDesigner的帮助下实现了滑块。 其余设置的代码如下所示: _ui->horizontalSlider->setRange(1, aMaximalValue); _ui->horizontalSlider->setValue(theCurrentValue); connect(

我尝试使用QSlider,但是如果有人单击某个位置X,他想将滑块放在该位置,滑块总是先将值设置为最大值或最小值,然后再设置为值X。因此,在这两者之间有一个不必要的步骤。 如何避免这一步

我在QTDesigner的帮助下实现了滑块。 其余设置的代码如下所示:

_ui->horizontalSlider->setRange(1, aMaximalValue);
_ui->horizontalSlider->setValue(theCurrentValue);
connect(_ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(onValueOfSliderChanged(int)));

在使用QSlider时,我的经验是,当您单击滑块中当前位置右侧的某个位置时(考虑到水平滑块),它将按页面步长大小增加滑块值。类似地,若单击值位于当前位置的左侧,它将按页面步长大小减小滑块值。只有当您将滑块拖动到该位置时,它才会将值设置为您想要的值,而不是单击。尝试设置页面步长大小,看看这是否是问题所在。

是的,正如shubh所解释的,页面步长可能太大了。QSlider的一个常见问题是,它们不会跳到您单击的位置,而是朝该方向移动页面步


该问题的解决方案已在

中描述,非常感谢,这是一个很好的提示,但遗憾的是,我仍然无法解决该问题。但这有助于更好地理解这个问题。我使用QProgressDialog是因为更改滑块值的操作会导致耗时的计算。因此,滑块似乎工作得更好,因为在按pageStep size增加值之后,它似乎也获得了将其设置为我单击的值的信号。