Seite 1 von 1

Slider in ein LineEdit Feld ausgeben

Verfasst: 28. Januar 2009 12:14
von Klausn
Hi zusammen,

wie kann man den int-Wert eines Sliders in ein LineEdit Feld ausgeben ?

ich bekomme immer wieder Meldung das die Konvertierung nicht hinhaut.

Es soll folgendermassen funktionieren:

Wenn der Slider bewegt wird, sollen die einzelnen int-Werte im lineEdit Feld erscheinen. Mit einem lCDNumber Feld ist das ja ganz einfach. Aber wie funktioniert das mit LineEdit ?

danke für hilfe

mfg
klausn

Verfasst: 28. Januar 2009 12:20
von franzf
In dem du statt der auf Strings ausgelegten QLineEdit ein QSpinBox nimmst. Das hat den passenden SLOT setValue(int).

Verfasst: 28. Januar 2009 12:43
von Klausn
jo danke das funktioniert ! Habs jetzt allerdings damit gelöst:

lineEdit9->insert((QString()).setNum(a));

Der Wert (a) wird damit in eine Zahl umgewandelt.

Verfasst: 28. Januar 2009 12:51
von solarix
Klausn hat geschrieben: ... (QString()).setNum(a)...
Naja.. die Trolls dachten wohl eher an: lineEdit9->insert(QString::number(a));

Verfasst: 28. Januar 2009 15:47
von Klausn
Wie kann man die einzelnen Schritte des Sliders verstellen ???

Beispiel:

Slider geht von 0 bis 1000 ! Alles in 10er Schritten ... wie kann man zum Beispiel eine Schrittgröße von 0,1 einstellen ???

Verfasst: 28. Januar 2009 15:49
von AuE
Steht sehr gut beschrieben in der Doku....

Verfasst: 28. Januar 2009 16:00
von Klausn
gibts da evtl. nen link ?? ich nutze hier nur QT 3.3.3


hab das gerade mal ausprobiert. Ich komme nicht unter eine Schrittweite von 1 !! Kann mir jemand weiterhelfen ? Ich benötige eine Schrittweite von ca. 0.05

Verfasst: 28. Januar 2009 16:47
von AuE
Slider::QSlider ( int minValue, int maxValue, int pageStep, int value, Orientation orientation, QWidget * parent, const char * name = 0 )
Constructs a slider whose value can never be smaller than minValue or greater than maxValue, whose page step size is pageStep and whose value is initially value (which is guaranteed to be in range using bound()).

If orientation is Qt::Vertical the slider is vertical and if it is Qt::Horizontal the slider is horizontal.

The parent and name arguments are sent on to the QWidget constructor.

von http://doc.trolltech.com/3.3/qslider.html

Verfasst: 28. Januar 2009 16:48
von pfid
Klausn hat geschrieben:gibts da evtl. nen link ?? ich nutze hier nur QT 3.3.3
http://doc.trolltech.com/3.3/classes.html

Verfasst: 29. Januar 2009 13:26
von Klausn
Sohooooo ,

ich hab das jetzt ne Weile ausprobiert. Allerdings ist eine Schrittweite von unter 1 nicht möglich... zumindest bekomm ich das nicht hin.

Mein Slider ist folgendermassen konfiguriert:

slider1->setRange( -1, 1 );
slider1->setValue( 0 );
slider1->setPageStep(0.05);

Wenn ich die Range verändere auf größere Werte und bei setPageStep auch größere Werte eintrage wird alles super übernommen und funktioniert auch genau so wie es sein soll. Aber bei Werten unter 1 gehts nicht mehr.

Hat noch jemand eine Idee oder einen Vorschlag wie man das realisieren kann !?

Verfasst: 29. Januar 2009 13:33
von solarix
Meine Güte.. ein bisschen Fantasie...

Code: Alles auswählen

slider1->setPageStep(0.05); 
Also "0.05" ist ein schlechter Integer-Wert.. siehe "void QSlider::setPageStep(int)"..

Also warum denn nicht einfach alles x100?

Code: Alles auswählen

slider1->setRange( -100, 100 );
slider1->setValue( 0 );
slider1->setPageStep(5); 
...
...
double sliderValue = slider->value()/(double)100;

Verfasst: 29. Januar 2009 13:40
von Klausn
ääähhhh jaaa ... integer ... da gehn ja nur vollzahlen ... manchmal steht man eben ein wenig auf dem schlauch !!! Danke nochmal .. funktioniert übrigens super jetzt !!!