我在 QSpinbox 和 QSlider 之间建立了关系。
QSpinbox 的范围是 -10.0 到 10.0,QSlider 的范围是 -100 到 100。
所以,QSlider 除以 10 的值是连接到 QSpinbox,反之亦然。
我互相使用“valueChanged()”信号。
我想在 QSpinbox 中输入“3.5”,在这种情况下,当我只输入“3”时,QSpinbox 的“valueChanged”会更改 QSlider 的值,然后 QSlider 会再次执行此操作。所以,QSpinbox 失去了它的焦点。
我不能一口气输入“3.5”。
"valueChanged()" SIGNAL 工作太勤奋了 :)
我该如何解决这个问题?
问问题
1776 次
1 回答
3
该valueChanged()
信号确实意味着在更改时主动触发。如果您希望在编辑完成时触发信号,则有一个专门用于该信号的信号editingFinished
:http ://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qabstractspinbox.html#editingFinished
你可能忽略了它,因为它是超类 QAbstractSpinBox 的成员。请注意,一旦小部件失去焦点或用户点击回车,此信号将触发。如果这也不是您想要的行为,那么剩下的唯一选择是使用具有短暂延迟的 QTimer,每次valueChanged
触发时都会重新启动,一旦用户等待足够长的时间,超时实际上会更新您的滑块。
我还注意到您正在尝试将非整数值与为整数设计的 QSpinBox 一起使用。您可能想尝试为浮点精度设计的 QDoubleSpinBox。可能表现得稍微好一点,valueChange()
因为它期望小数。虽然我只是猜测,因为我没有测试过:http ://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdoublespinbox.html
于 2012-02-23T02:05:12.073 回答