QSpinBox
-
Hallo,
bei einer SPinBox kann ich ja das Intervall über min und max festlegen. Gibt es eine Möglichkeit, dass ich mehrere Intervalle verwenden kann?
Zum Beispiel 1-6, dann nach der 6 kommt 20-30. Bzw. Ich stelle einen Bereich ein z.B. 1-6 und lasse jedoch noch eine Zahl zu wie die 10. Ist so etwas machbar? Wenn ja wie?
Gruß
-
Am besten schreibst du dir eine eigene Klasse von QAbstractSpinBox abgeleitet.
-
Hmm schade, dass es da nichts fertiges gibt. Kann man nicht auch irgendwie einen Validator auf die SpinBox anwenden?
-
Ok anscheinend muss man validate reimplementieren. Das mach ich gleich mal.
-
Der Programmierer schrieb:
Hmm schade, dass es da nichts fertiges gibt.
Weil das eher sehr ungewöhnlich ist. Vllt. fährst du mit ner QComboBox besser?
-
ComboBox schaue ich mir an. Das habe ich gerade gelesen. Da kann man ein LineEdit aus einer SpinBox machen:
QLineEdit * QAbstractSpinBox::lineEdit () const [protected]
. Wie setze ich das denn im Code um?
-
Der Programmierer schrieb:
Da kann man ein LineEdit aus einer SpinBox machen:
QLineEdit * QAbstractSpinBox::lineEdit () const [protected]
. Wie setze ich das denn im Code um?
Definitiv hast du da nicht wirklich gut hingeschaut:
This function returns a pointer to the line edit of the spin box.
Es gibt das LineEdit, in dem der User tippen kann, zurück. Das ist keine "Konvertierungsfunktion"
-
Ich habe das hier gelesen.
http://www.qtcentre.org/threads/14713-QSpinBox-validator-problem.
Das muss doch funktionieren...
-
Der Programmierer schrieb:
Ich habe das hier gelesen.
http://www.qtcentre.org/threads/14713-QSpinBox-validator-problem.
Das muss doch funktionieren...
Da steht auch nix anderes...
Eine SpinBox ist nix anderes als ein LineEdit mit zwei Knöpfen. Dabei wird nicht von QLineEdit abgeleitet, sondern ein LineEdit als Member gespeichert (eine SpinBox ist kein QLineEdit, sondern hat eines für die Usereingabe). Wenn du also in einer deiner Methoden direkten Zugriff auf das LineEdit brauchst (lesend oder schreibend) kannst du dir in deiner abgeleiteten Klasse durch diese Funktion Zugriff beschaffen.
-
Ok da werde ich mir eine eigene Klasse von QAbstractSpinBox ableiten. Was muss ich denn da für mein Vorhaben überschreiben. Gehen wir mal davon aus, dass die Klasse den Bereich: 1 und 10-20 abdecken soll.
-
Also ich habe mir jetzt eine Klasse abgeleitet, und
QValidator::State MySpinBox::validate(QString &text, int &pos) const { return validator->validate(text, pos); }
Wobei ich einen validator in der Klasse angelegt habe. Bei der Eingabe wird jetzt auch entsprechend geprüft. Was nicht geprüft wird, ist wenn ich die up und down -buttons nutze.