PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT-Problem mit keyEvent



Ginsengelf
07-03-2004, 13:49
Moin, ich habe ein Problem mit keyPressEvent() :
ich habe mir eine Klasse gebastelt, die ein Fraktal mal. Nun möchte ich in dem Fraktal mit den Cursor-Tasten hin- und herwandern können.


class Iterwidget : public QWidget
{
(...)
protected:
void keyPressEvent( QKeyEvent * );
(...)
}


void Iterwidget::keyPressEvent( QKeyEvent *event)
{
switch(event->key()){
case Key_Right: {
moveright();
break;
}
case Key_Left: {
moveleft();
break;
}
case Key_Up: {
moveup();
break;
}
case Key_Down: {
movedown();
break;
}
update();
}
}//funktioniert nicht :(


Das Widget steckt zusammen mit einem Button und einer Mini-Menüleiste in einer vbox, und ich verstehe nicht, warum es zwar mouseEvents, aber keine keyEvents annimmt.

Ginsengelf

tuxipuxi
07-03-2004, 16:14
hi,

sehr dürftige informationen, so kann ich(/man) nicht helfen :).

gruss,
michael.

Ginsengelf
07-03-2004, 16:42
Moin, ich hänge einfach mal das ganze Ding an...
Mein Problem ist, dass anscheinend der keyPressedEvent des Iterwidgets gar nicht aufgerufen wird, und ich verstehe nicht, warum nicht.

Ginsengelf

edit: die mouseWheelEvent-Funktion soll durch die KeyEvent-Funktion ersetzt werden.

anda_skoa
07-03-2004, 17:40
Möglicherweise hat das Widget nicht den Focus, sondern ein anderes.

Ciao,
_

Ginsengelf
07-03-2004, 18:23
Moin, ich habe in den Konstruktor jetzt ein

setFocusPolicy(QWidget::StrongFocus);
und zur Sicherheit noch
setInputMethodEnabled(TRUE);

eingebaut, und hasFocus() und isInputMethodEnabled() geben 1 aus, will sagen, es scheint jetzt den Fokus zu haben, reagiert aber trotzdem nicht auf die Tastatur :(


edit: ARGH! ich Depp habe im keyEvent die update()-Funktion mit in den switch()-Teil geschrieben, aber die vorherigen Anweisungen mit break beendet...kann natürlich nicht gehen!