33

入力とユーザーへのフィードバックに QSlider (v4.6) を使用しています。フィードバックのために、setValue メソッドを呼び出します。ユーザーが値を変更した場合にのみ発生するシグナルを見つけようとしています。valueChanged シグナルは、ユーザーが値を変更したとき、および setValue を呼び出したときに発生します。sliderMoved は、ユーザーがスライダーをドラッグしたときにのみ発生します (キーボードを使用しているときではありません)。API ドキュメントを確認しましたが、何も見つからないようです。何か不足していますか?これはよくあることのようです。他に信号がない場合、この機能をシミュレートする方法を教えてください。setValue を呼び出す前にフラグを設定し、setValue を呼び出すたびに信号を切断して再接続する必要がありますか?

4

1 に答える 1

48

良い質問です。API を確認しましたが、値がユーザーによって変更された場合にのみトリガーされるシグナルも見つかりませんでした。QObject::blockSignals提案した回避策が唯一のオプションである可能性があります。すべての信号を切断/接続する必要はなく、メソッドを使用するだけであることに注意してください。

slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);

それが役立つことを願っています。

于 2010-11-10T16:00:59.797 に答える