QItemDelegate und QValidator

Alles rund um die Programmierung mit Qt
Antworten
Toru
Beiträge: 10
Registriert: 27. April 2008 18:56

QItemDelegate und QValidator

Beitrag 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
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Re: QItemDelegate und QValidator

Beitrag 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
Toru
Beiträge: 10
Registriert: 27. April 2008 18:56

Re: QItemDelegate und QValidator

Beitrag 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?
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

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

Ciao,
Sephral
Toru
Beiträge: 10
Registriert: 27. April 2008 18:56

Beitrag 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!
Antworten