[Qt 3] QGLWidget akzeptiert kein keyPressEvent

Alles rund um die Programmierung mit Qt
Antworten
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

[Qt 3] QGLWidget akzeptiert kein keyPressEvent

Beitrag von kowi1134 »

Hallo!

In meiner Anwendung habe ich ein QGLWidget, dass auf verschiedene Knopfdrücke reagieren soll. Hierzu überschreibe ich die aus QWidget geerbte protected slots Methode

Code: Alles auswählen

void QWidget::keyPressEvent ( QKeyEvent * e ) [virtual protected]
Aber wie ich es auch drehe und wende, sie wird niemals aufgerufen, wenn ich einen Knopf drücke! Was wohl geht, ist die mousePressEvent Methode, aber die reicht mir eben nicht.

Dies ist meine QGLWidget Klasse:

Code: Alles auswählen

// Definition

class View : public QGLWidget
{
Q_OBJECT

// alle möglichen Methoden stehen hier noch

protected slots:
	void mousePressEvent ( QMouseEvent * e );
	virtual void keyPressEvent ( QKeyEvent * e );
	virtual void keyReleaseEvent ( QKeyEvent * e );

};

// Implementierung

void View::mousePressEvent ( QMouseEvent * e )
{
	qDebug("mouse pressed");
}


void View::keyPressEvent ( QKeyEvent * e )
{
	qDebug("key pressed");
}


void View::keyReleaseEvent ( QKeyEvent * e )
{
	qDebug("key released");
}
Weiß jemand, was ich falsch mache?

Kann es sein, dass ich erst irgendwie den Tastaturfokus auf das QGLWidget legen muss?
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Hallo,

du hast Recht. Das Widget muss den Fokus haben, wenn du die KeyEvents nutzen möchtest. Eventuell kann dir auch ein EventFilter helfen, um die entsprechenden Tasten abzufangen und alle weiteren Tasten dennoch nutzen zu können. Ich hoffe, ich konnte dir die nötigen Anregungen geben. Ansonsten, schreibe kurz nochmal etwas genauer, was du vo hast.

HeikoB
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Wo finde ich einen EventFilter?
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Hallo,

ich muss mich entschuldigen. Man sollte richtig lesen. Ich bin schon voll auf Qt4 eingestellt. Da gibt es EventFilter. In Qt3 könntest du, wenn du sonst keine Tastaturabfragen hast, den KeyboardFocus fest auf das GLWidget zu legen mit
glWidget->grabKeyboard();
http://doc.trolltech.com/3.3/qwidget.html#grabKeyboard

Vielleicht hilft dir das weiter.
Antworten