[gelöst] QCombobox beim verlassen auslesen
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
[gelöst] QCombobox beim verlassen auslesen
Moin,
ich möchte geren den Inhalt einer QCombobox auslesen, wenn ich per Tab, Return oder Mausklick diese verlasse.
Wie würdet Ihr das machen? Es gibt ja wohl kein Signal für den Verlust des Focus, oder? Würdet Ihr das über QWidget::focusOutEvent machen?
ich möchte geren den Inhalt einer QCombobox auslesen, wenn ich per Tab, Return oder Mausklick diese verlasse.
Wie würdet Ihr das machen? Es gibt ja wohl kein Signal für den Verlust des Focus, oder? Würdet Ihr das über QWidget::focusOutEvent machen?
Martin
Re: QCombobox beim verlassen auslesen
Genau, QComboBox überschreiben und im focusOutEvent ein Signal an die Eltern schicken.methusalem hat geschrieben:Würdet Ihr das über QWidget::focusOutEvent machen?
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Re: QCombobox beim verlassen auslesen
Hmm, das wäre ja total blöd. Da ich dann alle ComboBoxen von dieser abgeleiteten Klasse erstellen müsste. Und damit wäre das schnelle zusammenklicken des Layouts mit dem Designer ja dann auch hinfällig, da dieser die Combobox ja von QCombobox ableitet.macman hat geschrieben: Genau, QComboBox überschreiben und im focusOutEvent ein Signal an die Eltern schicken.
Warum haben die Trolle das Signal lostFocus() hier nicht eingebaut?
Martin
Re: QCombobox beim verlassen auslesen
Aber nicht unmöglich. Da ich selten eine *.ui Datei anfasse, wenn sie denn erstmal fertig ist, habe ich es auch schon so gelöst, das ich die ui_blabla.h editiert habe. Muß man dann aber nach jedem Kompletterstellen neu machen oder man überlässt es einem Skript.methusalem hat geschrieben:Hmm, das wäre ja total blöd.
Sie haben es nirgends eingebaut und zu 3er Zeiten gab es das auch nur bei QLineEdit.methusalem hat geschrieben:Warum haben die Trolle das Signal lostFocus() hier nicht eingebaut?
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Re: QCombobox beim verlassen auslesen
Moin,
Aber vielleicht bin ich ja auch auf dem Holzweg, und man kann mein Problem ganz anders lösen.
Ich habe mehrere Comboboxen, in denen jeweils ein Name ausgewählt werden soll. Wenn der User nun in einer dieser Boxen einen Namen ausgewählt, oder über die Tastatur eingegeben hat soll das Programm diese Namen in einem Array speichern.
Ich wollte nun immer dann, wenn der User eine Combobox verlässt den Wert der Combobox auslesen. Und dazu wäre halt ein Signal lostFocus() sehr nett.
Hat jemand ne andere Idee?
Naja, es wäre halt praktisch, wenn dieses Signal vorhanden wäre!macman hat geschrieben:Sie haben es nirgends eingebaut und zu 3er Zeiten gab es das auch nur bei QLineEdit.methusalem hat geschrieben:Warum haben die Trolle das Signal lostFocus() hier nicht eingebaut?
Aber vielleicht bin ich ja auch auf dem Holzweg, und man kann mein Problem ganz anders lösen.
Ich habe mehrere Comboboxen, in denen jeweils ein Name ausgewählt werden soll. Wenn der User nun in einer dieser Boxen einen Namen ausgewählt, oder über die Tastatur eingegeben hat soll das Programm diese Namen in einem Array speichern.
Ich wollte nun immer dann, wenn der User eine Combobox verlässt den Wert der Combobox auslesen. Und dazu wäre halt ein Signal lostFocus() sehr nett.
Hat jemand ne andere Idee?
Martin
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Warum haben die Trolle das Signal lostFocus() hier nicht eingebaut?
schreck lass nach...Sie haben es nirgends eingebaut und zu 3er Zeiten gab es das auch nur bei QLineEdit.
es gibt in der 4.0 tatsächlich kein lostFocus signal mehr für QLineEdit. Zum Glück wurde es wenigstens durch das (ähnliche) editingFinished() Signal abgelöst, so dass man z.B. im Anschluss an eine Eingabe noch Nachberechnungen anstellen kann.
Gruss Arne
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Re: QCombobox beim verlassen auslesen
also ... auf Änderungen des ComboBox Eintrages kannst Du über das Signal activated(int) reagieren. Ist die ComboBox editierbar, wird zusätzlich ein QLineEdit mit der ComboBox erzeugt (pComboBox->lineEdit() ist dann ungleich NULL). Das Signal dieses LineEdit - Objektes (ob nun lostFocus oder editingFinished) kannst Du mit Deinem Slot verbindenmethusalem hat geschrieben: Ich habe mehrere Comboboxen, in denen jeweils ein Name ausgewählt werden soll. Wenn der User nun in einer dieser Boxen einen Namen ausgewählt, oder über die Tastatur eingegeben hat soll das Programm diese Namen in einem Array speichern.
Ich wollte nun immer dann, wenn der User eine Combobox verlässt den Wert der Combobox auslesen. Und dazu wäre halt ein Signal lostFocus() sehr nett.
Hat jemand ne andere Idee?
Gruss Arne
PS: eine andere einfache Möglichkeit wäre ein eventfilter auf die ComboBox zu setzen und das focusOutEvent abzufangen
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Re: QCombobox beim verlassen auslesen
Ahh, das war mir nicht klar, das es da dann noch ein LineEdit Object gibt. Das wäre ja schon ganz gut.ArneStocker hat geschrieben: ...
Ist die ComboBox editierbar, wird zusätzlich ein QLineEdit mit der ComboBox erzeugt (pComboBox->lineEdit() ist dann ungleich NULL). Das Signal dieses LineEdit - Objektes (ob nun lostFocus oder editingFinished) kannst Du mit Deinem Slot verbinden
Hmm, ich gebe zu, das mir das Stichwort Eventfilter nicht so viel sagt. Wo finde ich dazu etwas in der QT-Doku?PS: eine andere einfache Möglichkeit wäre ein eventfilter auf die ComboBox zu setzen und das focusOutEvent abzufangen
Ansonsten vielen Dank für den Tip!
Martin
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Code: Alles auswählen
DialogKlasse::DialogKlasse(..)
{
...
this->installEventFilter( pFilterObj ); // pFilterObj = ComboBox
}
bool DialogKlasse::eventFilter(QObject *pFilterObj,QEvent *pEvent)
{
if ( (pFilterObj == ... ComboBox) &&
(pEvent->type() == FocusOut) )
{
.... todo
}
return BasisKlasse::eventFilter(..);
}
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Muss dich hier korrigieren. es muss heißen:ArneStocker hat geschrieben:Code: Alles auswählen
DialogKlasse::DialogKlasse(..) { ... this->installEventFilter( pFilterObj ); // pFilterObj = ComboBox } ...
Code: Alles auswählen
{
...
pFilterObj->installEventFilter(this); // pFilterObj = ComboBox
}
Martin