我正在为我编写的动画工具创建一个ui。ui由一个QDoubleSpinBox和一个QSlider组成。我已经用函数将QSlider连接到QDoubleSpinBox来转换它们的值。我想用滑块的值变化来更新数字调整框。我还希望spinbox的editingFinished()更新滑块控制柄的位置。我有这种联系。在
该工具有两种模式:“交互式”和“非交互式”。Interactive在滑块移动时调用我的动画工具的主函数,并将微调器/滑块的值作为参数。非交互模式意味着只有在释放滑块时才调用工具的功能。看起来滑块上的setTracking()是答案,但它当然打破了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()。在
它可能没有你想要的那么优雅和简单,但它应该是你所追求的行为。在
当您选中按钮进入交互模式时,
myFunction()
将在滑块移动和数字调整框完成编辑时调用。如果选中它以退出交互模式,myFunction()
将仅在释放滑块并编辑完数字调整框时调用。在相关问题 更多 >
编程相关推荐