PyQt4: kombinieren Sie textChanged-und editingFinished für QLineEdit
Gibt es eine Möglichkeit, zu kombinieren textChanged
und editingFinished
für QLineEdit
? Das problem ist, dass editingFinished
emittiert wird, auch wenn ich nur bewegen Sie den cursor Weg von QLineEdit
ohne irgendwelche änderungen. In der Erwägung, dass will ich Strahlen ein signal nur dann, wenn alle änderungen durchgeführt wurden, nachdem ich die Bearbeitung beendet.
Kann ich mir vorstellen, nur irgendwo speichern Sie den aktuellen text, vergleichen Sie den eingegebenen text mit Sie es und tun Sie etwas nur, wenn es sich unterscheidet. Aber ich Frage mich, ob es irgendeine Lösung rein basierend auf den Signalen, die Handhabung.
EDIT: musste ich Am Ende zum speichern des aktuellen Textes und vergleichen Sie mit dem neuen text an und Folgen Sie nicht der vorgeschlagenen Lösung. Ich erkannte, dass meine Bewerbung "1.2345" und "1.23" wäre der gleiche text, aber trotzdem ich das update auch einige andere Werte, die in diesem Fall und so weiter. Ich Schätze wirklich ausführliche Antwort und die Kommentare von @Avaris und @ekhumoro, und wird es akzeptieren, da es scheint, zu lösen, Zitat problem.
InformationsquelleAutor Katya | 2012-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten
Für die Erfassung von manuellen Bearbeitungen:
Edit 2
Zur Erfassung aller änderungen (programmgesteuerte und manuelle):
Edit 3
Für die Erfassung von nur-text-änderungen durch den Benutzer:
event.reason()
). Auch das signal nicht ausgelöst, wenn die return - /EINGABETASTE gedrückt wird - so einige Tastatur-handling erforderlich ist.Sie sind zu Recht über diese Fragen. Aktualisiert meine Antwort.
Nicht schlecht - aber was, wenn z.B.
setText()
oderclear()
aufgerufen wird zwischen den Bearbeitungen?Argh, das wird wiederum in eine neue
QLineEdit
Umsetzung :). Dann kommtdel
,backspace
,insert
usw... Hmm ich denke ich habe eine Lösung für alle.Ich denke, die
_before
- Attribut festgelegt werden sollte, bevor irgendwelche Signale ausgestrahlt werden, wie der text modifiziert werden kann, um einen handler. Aber auch so: ist die OP Skillung abgestimmt? Das signal ausgestrahlt werden solltextModified
nach programmatischen text ändert.InformationsquelleAutor Avaris
Wenn Sie nur wollen, um zu erkennen, ob alle änderungen vorgenommen wurden (im Gegensatz zu, ob der text anders aus, wie es begonnen), können Sie die
geändert
Eigenschaft desQLineEdit
mit dereditingFinished
signal:InformationsquelleAutor ekhumoro