Я создаю ui для инструмента анимации, который я написал. Ui состоит из QDoubleSpinBox и QSlider. Я подключил QSlider к QDoubleSpinBox с функциями для преобразования их значений. Я бы хотел, чтобы обновление spinbox изменялось с помощью параметра ValueChange ползунка. Мне также хотелось бы, чтобы редактирование spinboxFinished() обновляло положение ползунка. У меня это соединение работает.Получение QDoubleDoubleSpinBox для отображения (преобразованного) значения QSlider и по-прежнему использовать setTracking (False)
Существует два режима работы инструмента; «интерактивный» и «неинтерактивный». Интерактивный вызов основной функции моего анимационного инструмента при перемещении ползунка, с параметром spinbox/slider в качестве параметра. Неинтерактивный режим предназначен для вызова функции моего инструмента только при отпускании слайдера. Похоже, что 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() ползунка.