Seite 1 von 1

QItemDelegate und QValidator

Verfasst: 8. Mai 2008 18:31
von Toru
Hi,

habe hier eine View mit QItemDelegate und als Editor verwendet ich QLineEdit. Ich möchte die Eingabe gern mit einem QValidator überwachen und falls sie außerhalb des zulässigen Bereichs liegt, wieder den alten Wert eintragen. Kurzum: Wenn der Benutzer 'Enter' drückt oder die Zelle in der View verlässt, soll die Eingabe gecheckt werden.

Die Überprüfung mit QDoubleValidator in den Methoden QItemDelegate::setModelData oder QItemDelegate::setEditorData finde ich sehr unschön (hatte aber bisher keine bessere Idee). An welcher "Stelle" würdet ihr die Validierung vornehmen?

Toru

Re: QItemDelegate und QValidator

Verfasst: 8. Mai 2008 18:54
von Sephral
Toru hat geschrieben:Die Überprüfung mit QDoubleValidator in den Methoden QItemDelegate::setModelData oder QItemDelegate::setEditorData finde ich sehr unschön (hatte aber bisher keine bessere Idee). An welcher "Stelle" würdet ihr die Validierung vornehmen?
Toru
Hi,
eigentlich bist du an dieser Stelle genau richtig :-)

Alternativ könntest du für integer eine QSpinBox erzeugen als Editor und die Spinbox auf einen bestimmten Wertebereich festlegen.

Für den Anwender sicher toll anzuschauen wäre auch ein QTextEdit als Editor gekoppelt mit einem QSyntaxHighlighter. Sobald der Anwender etwas schreibt was nicht erlaubt ist, wird die betroffene Stelle farbig markiert.


EDIT: Für die Prüfungen würde ich aber QRegExp verwenden...

Ciao,
Sephral

Re: QItemDelegate und QValidator

Verfasst: 8. Mai 2008 20:28
von Toru
Sephral hat geschrieben:
Toru hat geschrieben:Die Überprüfung mit QDoubleValidator in den Methoden QItemDelegate::setModelData oder QItemDelegate::setEditorData finde ich sehr unschön (hatte aber bisher keine bessere Idee). An welcher "Stelle" würdet ihr die Validierung vornehmen?
Toru
Hi,
eigentlich bist du an dieser Stelle genau richtig :-)

Alternativ könntest du für integer eine QSpinBox erzeugen als Editor und die Spinbox auf einen bestimmten Wertebereich festlegen.

Für den Anwender sicher toll anzuschauen wäre auch ein QTextEdit als Editor gekoppelt mit einem QSyntaxHighlighter. Sobald der Anwender etwas schreibt was nicht erlaubt ist, wird die betroffene Stelle farbig markiert.


EDIT: Für die Prüfungen würde ich aber QRegExp verwenden...

Ciao,
Sephral
Im Moment hantiere ich mit QValidator in beiden o.g. Memberfunktionen rum. Das finde ich sehr umständlich und ich habe das Gefühl, dass das nicht richtig ist. In welcher Memberfunktion wendest du den Validator an?

Verfasst: 8. Mai 2008 20:32
von Sephral
Hallo,

ich prüfe den Input lediglich bevor er im Model landet.
Also QItemDelegate::setModelData().

Ciao,
Sephral

Verfasst: 8. Mai 2008 20:55
von Toru
Sephral hat geschrieben:Hallo,

ich prüfe den Input lediglich bevor er im Model landet.
Also QItemDelegate::setModelData().

Ciao,
Sephral
OK, danke. Klappt gut!