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 はあまりにも熱心に機能します :)
どうすればこの問題を解決できますか?
1 に答える
valueChanged()
信号は実際、変更されているときに積極的に発火することを意図しています。編集が終了したときにシグナルを発したい場合は、それ専用のシグナルがありますeditingFinished
: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qabstractspinbox.html#editingFinished
スーパークラス QAbstractSpinBox のメンバーであるため、見落としているかもしれません。このシグナルは、ウィジェットがフォーカスを失うか、ユーザーが Enter キーを押すと発生することに注意してください。それもあなたが望む動作ではない場合、残りの唯一のオプションは、起動するたびに再起動する短い遅延で QTimer を使用することですvalueChanged
。ユーザーが十分に長く待機すると、タイムアウトが実際にスライダーを更新します。
また、int 用に設計された QSpinBox で整数以外の値を使用しようとしていることに気付きました。浮動精度用に設計された QDoubleSpinBox を試してみてください。はvalueChange()
、小数を想定しているため、動作が少し良くなる可能性があります。私はそれをテストしていないので推測していますが:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdoublespinbox.html