2012-02-23 9 views
1

QSpinboxとQSliderを関連付ける。
QSpinboxの範囲は-10.0〜10.0で、QSliderの範囲は-100〜100です。
したがって、QSliderの値を10で割った値はQSpinboxに接続し、その逆もあります。
私は "valueChanged()" SIGNALをお互いに使用します。
QSpinboxに「3.5」と入力します。この場合、「3」と入力すると、QSpinboxの「valueChanged」がQSliderの値を変更し、QSliderが再び動作します。だから、QSpinboxはそれを失う。
ワンショットで「3.5」と入力することはできません。
"valueChanged()" SIGNALがぎこちなく働いています:)
どうすればこの問題を解決できますか?PyQt4:QSpinboxとQSliderを同期させる

答えて

3

valueChanged()信号は実際には変更されたときにアクティブに発火することを意味します。あなたがしたい場合は、編集が終了したときに信号を発射、信号はそのために特別にありeditingFinishedと呼ば:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qabstractspinbox.html#editingFinished

スーパーQAbstractSpinBoxの加盟ので、あなたがそれを見落としている可能性があります。このシグナルは、ウィジェットがフォーカスを失ったり、ユーザーがenterキーを押すと発生します。それがどちらかの動作ではない場合、残っている唯一のオプションはQTimerを短時間の遅延で使用し、毎回valueChangedが起動し、ユーザが十分に待ってからタイムアウトが実際にスライダを更新します。

また、整数用に設計されたQSpinBoxで非整数値を使用しようとしていることに気付きました。浮動小数点精度用に設計されたQDoubleSpinBoxを試してみてください。 valueChange()は、小数点が期待されるように少し上手く動作するかもしれません。 http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdoublespinbox.html

+0

"valueChanged"を "editingFinished"に変更しました。私はそれを試していないので、推測しています。ありがとうございました! –

関連する問題