KeyEvent über editable ComboBox
KeyEvent über editable ComboBox
Hallo,
steh irgendwie die ganze Zeit auf dem Schlauch...
Ich habe eine editierbare ComboBox in der man also selbst Text reinschreiben kann.
Jetzt will ich dass der user erst den Text schreibt und erst dann ein event gefeuert wird wenn er auf "Enter" haut. Aus dem event will ich dann natürlich den Text auslesen.
Natürlich habe ich in der Doku QKeyEvent mir angeschaut. Nur weiß ich die Realisierung bezüglich der Entereingabe nicht...soll ich da überprüfen mit if QKeyEvent::key() == "Enter" oder so?
Vielleicht gibt es irgendwo ein kleines Beispiel...in den Trolltech examples konnte ich nichts finden....
Danke für Eure Hilfe
steh irgendwie die ganze Zeit auf dem Schlauch...
Ich habe eine editierbare ComboBox in der man also selbst Text reinschreiben kann.
Jetzt will ich dass der user erst den Text schreibt und erst dann ein event gefeuert wird wenn er auf "Enter" haut. Aus dem event will ich dann natürlich den Text auslesen.
Natürlich habe ich in der Doku QKeyEvent mir angeschaut. Nur weiß ich die Realisierung bezüglich der Entereingabe nicht...soll ich da überprüfen mit if QKeyEvent::key() == "Enter" oder so?
Vielleicht gibt es irgendwo ein kleines Beispiel...in den Trolltech examples konnte ich nichts finden....
Danke für Eure Hilfe
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: KeyEvent über editable ComboBox
Schonmal ausprobiert? Sollte funktionieren...Mati hat geschrieben: Nur weiß ich die Realisierung bezüglich der Entereingabe nicht...soll ich da überprüfen mit if QKeyEvent::key() == "Enter" oder so?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Also entweder Du leitest von QCombobbox ab und reimplementierst void QWidget::keyPressEvent ( QKeyEvent * event ) oder benutzt void QObject::installEventFilter ( QObject * filterObj ). Ich würde wohl den eventFilter benutzen. In der Doku ist da auch ein kleines Beispiel zu finden.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
danke...habs so versucht und es passiert was:
Bei ComboBox erstellung
cb->installEventFilter(this);
bei Enter auf die ComboBox erscheint der int-Wert vom Enter - kann es richtig sein mit: 16777220
???
Ist meine vorgehensweise so korrekt?
seltsam ist nur dass wenn ich auf installEventFilter gehe ....dann ist die ComboBox nicht mehr editierbar also ich kann dann keinen user input starten...gibts dafür ne Lösung ?
Bei ComboBox erstellung
cb->installEventFilter(this);
Code: Alles auswählen
void
UIMainWindow::test(QKeyEvent * e)
{
//std::cout << user_zoom_text.toStdString() << std::endl;
std::cout << e->key() << std::endl;
}
bool UIMainWindow::eventFilter(QObject *obj, QEvent *ev){
if(obj == cb_zoom){
if(ev->type() == QEvent::KeyPress){
QKeyEvent *k = (QKeyEvent *)ev;
if((k->key() == Qt::Key_Return) || (k->key() == Qt::Key_Enter))
test(k);
return true;
}
else{
return false;
}
}
else{
return QMainWindow::eventFilter(obj, ev);
}
}
???
Ist meine vorgehensweise so korrekt?
seltsam ist nur dass wenn ich auf installEventFilter gehe ....dann ist die ComboBox nicht mehr editierbar also ich kann dann keinen user input starten...gibts dafür ne Lösung ?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
0x01000005 == 16777220 == Qt::Key_Enter, also korrekt (siehe qnamespace.h)
Wegen dem anderen Problem - Du 'isst' jeden KeyPress event, hast also nicht genau aufgepasst und wirklich wie im Beispiel einen KeyEater geschreiben. Gib immer false zurück dann ists ok.
Wegen dem anderen Problem - Du 'isst' jeden KeyPress event, hast also nicht genau aufgepasst und wirklich wie im Beispiel einen KeyEater geschreiben. Gib immer false zurück dann ists ok.
The eventFilter() function must return true if the event should be filtered, (i.e. stopped); otherwise it must return false.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Warum so kompliziert?
QComboBox hat ein QLineEdit
und QLineEdit hat ein returnPressed-Signal...
QComboBox hat ein QLineEdit
Code: Alles auswählen
QLineEdit * QComboBox::lineEdit () constHeyho,
feiner Thread, ziemlich das, was ich gesucht hab
Ich möchte in meiner ComboBox auf "Del" reagieren und damit Items aus der ComboBox löschen.
Das klappt im Moment nur, wenn ein Item ausgewählt ist. Ich hätte es aber gern schon beim highlighten. Also ComboBox öffnen -> Maus auf zu löschendes Item halten -> Del drücken -> Item weg.
Gibts da ne simple Lösung?
Danke!
feiner Thread, ziemlich das, was ich gesucht hab
Ich möchte in meiner ComboBox auf "Del" reagieren und damit Items aus der ComboBox löschen.
Das klappt im Moment nur, wenn ein Item ausgewählt ist. Ich hätte es aber gern schon beim highlighten. Also ComboBox öffnen -> Maus auf zu löschendes Item halten -> Del drücken -> Item weg.
Gibts da ne simple Lösung?
Danke!