Archiv verlassen und diese Seite im Standarddesign anzeigen : OnLostFocus in Python?
Hans-Georg Normann
26-09-2002, 22:58
So langsam kütt et....
So langsam sind ja erste Erfolge in Python mit QT sichtbar. Die GUI habe ich mir mit dem designer von QT zurechgebaut. Auch die Signals und Slots wurden damit erstellt und verbunden. Jetzt zu meinem Prob damit.
Ich habe ein QLineEdit Objekt. Die Eingabe soll z. B. ein existierender Dateiname sein. Neben KlickiBunti ist aber auch eine manuelle Eingabe möglich. Leider steht mir in QLineEdit kein Event OnLostFocus zur Verfügung (d. h. wenn der Cursor dieses QLineEdit verlässt, wird das Event ausgelöst). Besteht die Möglichkeit, ein solches Event zu definieren? Wie geht das?
Hans
anda_skoa
27-09-2002, 12:25
Hi!
Ich weiß jetzt nicht genaz, wofür du das brauchst.
Ich nehme an, um zu diesem Zeitpunkt den Inhalt zu prüfen.
Zum Inhalti prüfen kann man (zumindest unter Qt in C++) einen QValidator setzen, der bei Textänderungen den Inhalt prüft.
Oder man connected auf das textChanged signal und macht es extern.
Das Event, dass du suchst, erhälts du, wenn du eine Klasse von QLineEdit ableitest und die Methode focusOutEvent neu implementierts (überschreibst).
focusOUtEvent und focusInEvent sind Standardeventhandler in QWidget.
Ah!
Eine Alternative ist noch, einen EventFilter am LineEdit zu installieren (siehe QWidget::installEventFilter)
Der bekommt dann alle Events, die die überwachte Komponente bekommt.
Alles geht zumindest so in Qt unter C++, weiß nicht, ob und wie das unter Python geht.
Ciao,
_
Hans-Georg Normann
27-09-2002, 13:19
Jo, hört sich gut an, die Sache hat nur einen Haken: Ich bin (noch) zu blöd, um Events zu implementieren. Das was ich bisher gecodet habe steht hier (http://www.normann-live.de/HansGeorg/python/NorPyTar/NorPyTar.tar.gz)
NorPyTarGui.ui = Mit QT designer erstellte GUI incl. Connections und Slots
NorPyTarGui.py = mit pyuic erstellte Datei aus NorPytarGui.ui
norpytar.py = eigentlicher Aufruf. Hier soll ads Eventhandling stattfinden.
Warum ich nicht den Event textChanged nehme? Es macht keinen Sinn, einen noch nich fertig eingegebenen Dateinamen auf Richtigkeit, Existenz oder ähnlichem zu prüfen. Dieser Event wird doch bei jedem Tastenschlag ausgelöst, oder? Ich gann mich auch nicht auf den Event returnPressed() verlassen, denn wenn ich mit der TAB Taste das Feld verlasse, erfolgt keine Prüfung.
Hans
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.