2017-03-15 77 views
0

我有一个QLineEdit和QSlider在其中互相交互。使用浮动QSlider

例如,如果我设置在QLineEdit的一个值,滑块将被更新,或者如果我碰到滑动滑块,将在QLineEdit的

# If user change value on the slider 
self.timer_slider.valueChanged.connect(self.set_value) 
# If user sets a value in the text box instead 
self.timer_value.textChanged.connect(self.set_slider) 

def set_slider(self, value): 
    self.timer_slider.setValue(int(value)) 

def set_value(self, value): 
    self.timer_value.setText(str(value)) 

更新值反正是有,我可以用float代替int值?

+1

[QDoubleSpinBox(https://doc.qt.io/qt-5/qdoublespinbox.html)。 – ekhumoro

回答

0

多的调查结果后,这对我的作品:

# Connection Signals 

# When user tweaks using the slider 
self.slider.valueChanged[int].connect(self.update_spinbox) 
# When user modify via the spinbox 
self.spinbox_value.editingFinished.connect(self.update_slider) 


# Functions for each modication made towards slider and spinbox 
def update_slider(self): 
    # spinbox_value uses float/ doubles type 
    # '*100' is used to convert it into integer as QSlider 
    # only register integer type 
    spinbox_value = self.spinbox_value.value() * 100 
    self.slider.setSliderPosition(spinbox_value) 

def update_spinbox(self, value): 
    # QSlider only uses integer type 
    # Need to convert the value from integer into float 
    # and divides it by 100 
    self.spinbox_value.setValue(float(value)/100)