2017-03-15 1 views
0

Ich habe ein QLineEdit und ein QSlider, in denen es miteinander interagiert.Verwenden Sie Float für QSlider

Eg. Wenn ich einen Wert im QLineEdit gesetzt, wird der Schieber aktualisiert, oder wenn ich den Schieber über gleiten, wird der Wert in QLineEdit aktualisiert

# 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)) 

Gibt es trotzdem, dass ich float statt int Werte verwenden kann?

+1

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

Antwort

0

Nach vielen Erkenntnisse, das funktioniert für mich:

# 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) 
Verwandte Themen