QComboBox - selectRow???

Alles rund um die Programmierung mit Qt
Antworten
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

QComboBox - selectRow???

Beitrag von Hulk2442 »

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.

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();
}
TIA
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Gibt es jedoch vielleicht eine Besser Lösung???
Bei mir macht das QComboBox von Haus aus...
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Meinst du du das Programm eins zu eins?
Wenn ja dann hast du recht aber auch nur weill der "showPopup" Befehl mehrmals aufgeruffen wird.

Code: Alles auswählen

            case Qt::Key_W:      
               pCombo->setCurrentIndex(1);
               pCombo->showPopup();             //<<---------------  Vermeidbar????
               break;
            
            case Qt::Key_S:
               pCombo->setCurrentIndex(0);
               pCombo->showPopup();             //<<---------------  Vermeidbar????
               break; 
Genau das möchte ich ja vermeiden.
Antworten