QComboBox - selectRow???
Verfasst: 29. Juli 2008 13:09
HI
Ich bin gerade dabei die Bedingung einer QComboBox mittels Tastatur zu lösen.
Bin jedoch an einem Punkt gelandet wo ich mich im Kreis drehe und nicht weiter komme.
Das Problem ist das wenn ich die Liste dieser Box öffne ich mittels Tasten hindurch scrollen möchte. Was jedoch irgendwie nicht so ganz funktionieren will.
Zwar wird der Index gesetzt jedoch nicht der Eintrag in der Liste hervorgehoben.
Dabei sei noch gesagt das zum scrollen nicht die Pfeiltasten verwendet werden.
Eine Lösung habe ich gefunden indem ich das Popupfenster durch ein neuerliches Zeichnen neu Zeichne und somit dem gewollten Effekt erzwinge!
Gibt es jedoch vielleicht eine Besser Lösung???
Siehe dazu folgenden Code.
TIA
Ich bin gerade dabei die Bedingung einer QComboBox mittels Tastatur zu lösen.
Bin jedoch an einem Punkt gelandet wo ich mich im Kreis drehe und nicht weiter komme.
Das Problem ist das wenn ich die Liste dieser Box öffne ich mittels Tasten hindurch scrollen möchte. Was jedoch irgendwie nicht so ganz funktionieren will.
Zwar wird der Index gesetzt jedoch nicht der Eintrag in der Liste hervorgehoben.
Dabei sei noch gesagt das zum scrollen nicht die Pfeiltasten verwendet werden.
Eine Lösung habe ich gefunden indem ich das Popupfenster durch ein neuerliches Zeichnen neu Zeichne und somit dem gewollten Effekt erzwinge!
Gibt es jedoch vielleicht eine Besser Lösung???
Siehe dazu folgenden Code.
Code: Alles auswählen
#include <QApplication>
#include <QWidget>
#include <QComboBox>
#include <QString>
#include <QKeyEvent>
class MyWidget : public QWidget
{
public:
QComboBox *pCombo;
MyWidget()
{
pCombo = new QComboBox(this);
pCombo->addItem("1 - Eins");
pCombo->addItem("2 - Zwei");
pCombo->addItem("3 - Drei");
grabKeyboard();
}
void keyPressEvent(QKeyEvent *pEvent)
{
switch( pEvent->key() )
{
case Qt::Key_A:
pCombo->showPopup();
break;
case Qt::Key_W: //<<--------------- select next row
pCombo->setCurrentIndex(1);
pCombo->showPopup();
break;
case Qt::Key_S: //<<--------------- select prev row
pCombo->setCurrentIndex(0);
pCombo->showPopup();
break;
case Qt::Key_D:
pCombo->hidePopup();
break;
default:
break;
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}