我正在为我写的动画工具创建一个UI。 ui包含一个QDoubleSpinBox和一个QSlider。我已将QSlider连接到带有函数的QDoubleSpinBox以转换它们的值。我想通过滑块的valueChange保持spinbox更新。我还想要spinbox的editingFinished()来更新滑块句柄的位置。我有这个连接工作。获取一个QDoubleDinSpinBox来显示QSlider的(转换)值并仍然使用setTracking(False)
该工具有两种模式; “互动”和“非互动”。交互式调用我的动画工具的主要功能作为滑块移动,以spinbox的/滑块的值作为参数。非交互式模式仅在释放滑块时才会调用我的工具函数。它看起来像滑块上的setTracking()就是答案,但它当然会中断spinbox的始终显示滑块值的行为。
有没有办法让spinbox连接到滑块的值并仍然在滑块上使用setTracking(False)?是否有另一种方法来实现我正在寻找的行为?我正在使用Python和Pyside。
# jumping to relevant code
self.spinbox = QtGui.QDoubleSpinBox()
self.spinbox.setRange(0.0, 1.0)
self.spinbox.setDecimals(3)
self.sld = QtGui.QSlider()
self.sld.setRange(0, 1000)
self.sld.valueChanged[int].connect(self.update_spinbox)
self.spinbox.editingFinished.connect(self.update_slider_position)
def update_spinbox(self, value):
self.spinbox.setValue(float(value)/1000)
def update_slider_position(self):
self.sld.setSliderPosition(self.spinbox.value()*1000)
ui中的菜单用于切换滑块的setTracking()。