我使用QSlider (v4.6)进行输入,并向用户提供反馈。对于反馈,我将调用setValue方法。我正在尝试寻找一个只有在用户修改了值时才会触发的信号。当用户更改该值以及我调用setValue时,valueChanged信号都会触发。仅当用户拖动滑块时(不是使用键盘时),才会触发sliderMoved。我检查了API文档,似乎什么也找不到。我是不是遗漏了什么?这似乎是很常见的事情。如果没有其他信号,您建议我如何模拟此功能?我应该在调用setValue之前设置一个标志,在每次调用setValue...时断开并重新连接信号吗?
发布于 2010-11-11 00:01:00
问得好,我检查了API,也找不到只有在用户修改值时才会触发的信号。您提出的解决方法可能是唯一的选择,但请记住,您不必断开/连接所有信号,只需使用QObject::blockSignals方法:
slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);希望这能有所帮助。
https://stackoverflow.com/questions/4146140
复制相似问题