私が書いたアニメーション ツールの ui を作成しています。UI は QDoubleSpinBox と QSlider で構成されます。値を変換する関数を使用して、QSlider を QDoubleSpinBox に接続しました。スライダーの valueChange でスピンボックスを更新し続けたいと思います。また、スピンボックスのeditingFinished()でスライダーハンドルの位置を更新したいと思います。この接続が機能しています。
ツールには 2 つのモードがあります。「インタラクティブ」と「非インタラクティブ」。Interactive は、スライダーが移動すると、スピンボックス/スライダーの値をパラメーターとして、アニメーション ツールのメイン関数を呼び出します。非インタラクティブ モードは、スライダーが離されたときにのみツールの関数を呼び出すことを意図しています。スライダーの setTracking() が答えのように見えましたが、もちろん、常にスライダーの値を表示するというスピンボックスの動作が壊れています。
スピンボックスをスライダーの値に接続したままにして、スライダーでも 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() を切り替えます。