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
QItemDelegate und QValidator
Re: QItemDelegate und QValidator
Hi,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
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
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 hat geschrieben:Hi,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
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