Gibt es eine Möglichkeit textChanged
und editingFinished
für QLineEdit
zu kombinieren? Das Problem ist, dass editingFinished
ausgegeben wird, auch wenn ich den Cursor nur ohne Änderungen von QLineEdit
wegbewege. Ich möchte jedoch nur dann ein Signal ausgeben, wenn nach der Bearbeitung Änderungen vorgenommen wurden.PyQt4: Kombinieren Textchanged und editingFinished für QLineEdit
Ich kann mir vorstellen, nur irgendwo den aktuellen Text zu speichern, den eingegebenen Text damit zu vergleichen und etwas nur dann zu tun, wenn es anders ist. Aber ich frage mich, ob es eine Lösung gibt, die rein auf Signalverarbeitung basiert.
EDIT: Am Ende musste ich den aktuellen Text speichern und mit dem neuen Text vergleichen und nicht der vorgeschlagenen Lösung folgen. Ich erkannte, dass in meiner Anwendung "1.2345" und "1.23" der gleiche Text sein würde, aber ich muss trotzdem einige andere Werte aktualisieren und so weiter. Ich schätze die ausführliche Antwort und Kommentare von @Avaris und @ekhumoro sehr und werde sie akzeptieren, da sie das ursprünglich gemeldete Problem zu lösen scheint.
Ihre Lösung unvollständig zu sein scheint. Zum Beispiel wird das Signal ausgelöst, wenn das Kontextmenü des Linien-Editors geöffnet wird (also müssen Sie vielleicht das 'event.reason()' überprüfen). Außerdem wird das Signal * nicht ausgelöst, wenn Return/Enter gedrückt wird - daher ist eine gewisse Tastaturbedienung erforderlich. – ekhumoro
@ekhumoro: Sie haben Recht mit diesen Fragen. Meine Antwort wurde aktualisiert. – Avaris
Nicht schlecht - aber was ist, wenn z.B. 'setText()' oder 'clear()' wird zwischen den Bearbeitungen aufgerufen? – ekhumoro