Seite 1 von 1

QIntValidator Min > 0

Verfasst: 22. Juni 2017 11:11
von stonecold
Hallo,

wir diskutieren hier gerade folgendes Problem. Zur Überprüfung der Eingaben eines LineEdit nutzen wir einen QIntValidatior. Wir reagieren auf das Signal EditingFinished() um die eingegebenen Werte aus der LineEdit auszulesen.

In unserem Beispiel setzten wir den Minimumwert 50. Wenn nun begonnen wird einen Wert einzugeben, z.B. 6, und anschließend die LineEdit verlassen wird, bekommen wir kein EditingFinished() Signal. Das liegt wahrscheinlich daran, dass die bisherige Eingabe ungültig ist, allerdings durch den Validator keine "Berücksichtigung" fand, da ja die Möglichkeit bestanden hätte, dass man noch ein zusätzliche 0 eingibt und so den vorgegebenen Minimum Wert überschritten wäre.

Die aktuelle Lösung sieht so aus, dass man für diese spezielle Line Edit jetzt noch FocusLost Event oder ähnliches abfragt und eine eigene Behandlung Implementiert. Ich vermute, dass dieses Problem kein Einzelfall ist und es bessere Lösungen geben müsste. Weiß jemand Rat?

Wir nutzen die qt Version 4.8 (Ich weiß, ist alt..... ist aber so. Ein Versions Update ist NICHT möglich!!!)

Danke für eure Hilfe und VG

Re: QIntValidator Min > 0

Verfasst: 22. Juni 2017 17:34
von Christian81
Von QIntValidator ableiten, validate() überschreiben und den dortigen Rückgabewert (der in dem Fall QValidator::Intermediate sein sollte) dann auf QValidator::Valid umbiegen. Dann muss die Prüfung auf > 50 dann aber eben weiter 'oben' gemacht werden.
Oder eben bei QValidator::Intermediate ein Signal senden und dann dort irgendwas damit machen.