【问题标题】:PyQt4 : Sync between QSpinbox and QSliderPyQt4:QSpinbox 和 QSlider 之间的同步
【发布时间】:2012-03-13 10:21:55
【问题描述】:

我在 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 工作太勤奋了 :)
我该如何解决这个问题?

【问题讨论】:

    标签: pyqt qslider qspinbox


    【解决方案1】:

    valueChanged() 信号确实意味着在更改时主动触发。如果您希望在编辑完成时触发信号,则有一个专门用于该信号的信号 editingFinishedhttp://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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-09
      • 2013-10-10
      • 1970-01-01
      • 2019-06-21
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多