PyQt4:QSpinbox和QSlider之间的同步

时间:2012-02-23 01:23:42

标签: pyqt qslider qspinbox

我在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 个答案:

答案 0 :(得分:3)

valueChanged()信号确实意味着在更改时会激活。如果您希望在编辑完成时触发信号,则会有一个专门针对editingFinished的信号:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qabstractspinbox.html#editingFinished

你可能忽略了它,因为它是超类QAbstractSpinBox的成员。请注意,一旦窗口小部件失去焦点或用户点击进入,此信号将会触发。如果这不是您想要的行为,那么剩下的唯一选择是使用QTimer,其短暂延迟会在每次valueChanged次触发时重新启动,一旦用户等待足够长时间,超时将实际更新滑块。

我还注意到你正在尝试使用非整数值和QSpinBox,它是专为int设计的。您可能想尝试一个专为浮动精度设计的QDoubleSpinBox。 valueChange()可能表现得稍好一些,因为它期望小数。虽然我只是猜测,因为我还没有测试过:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdoublespinbox.html