QSlider值改变信号

Dav*_*res 26 c++ qt4 qslider

我正在使用QSlider(v4.6)进行输入以及向用户提供反馈.对于反馈,我将调用setValue方法.我试图找到一个只有在用户修改了值时才会触发的信号.当用户更改值以及调用setValue时,将触发valueChanged信号.sliderMoved仅在用户拖动滑块时触发(而不是在使用键盘时).我检查了API文档,似乎找不到任何东西.我错过了什么吗?这看起来很常见.如果没有其他信号,您会如何建议我模拟此功能?我应该在调用setValue之前设置一个标志,每次调用setValue时断开并重新连接信号......?

Paw*_*ski 40

好问题,我检查了API,也找不到只有在用户修改了值时才会触发的信号.您提出的解决方法可能是唯一的选择,请记住,您不必断开/连接所有信号,只需使用QObject::blockSignals方法:

slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 您可能希望存储`blockSignals(true)`返回的值,并在第二次调用中使用它而不是`false`.这样,如果其他一些代码已经启用了信号阻塞,那么你就不会搞砸状态.(我希望这个问题不大可能,但无论如何防御性编码都是个好主意.) (12认同)