Qt4:キーボードの監視


Qt4:百の定石


  • キー入力があると keyPressEvent?() にイベントがくる。
  • キーが押し終わると keyReleaseEvet?() が発生する。
  • 親Widget に登録する時、登録するWidget にキーイベントがくるようにするにはsetFocusPolicy?(Qt::StrongFocus?) を使う。
class mapView:public QWidget
{
  Q_OBJECT
     :
     :
  protected:
	void 		keyPressEvent( QKeyEvent* e ) ;
	void 		keyReleaseEvent( QKeyEvent *e ) ;
} ;
void mapView:: keyPressEvent( QKeyEvent *e )  
{
  if (e->key() == Qt::Key_Up)
     magnify() ;
  if (e->key() == Qt::Key_Down)
    reduce() ;
  if (e->key() == Qt::Key_Right){
     if (e->modifiers() & Qt::ShiftModifier) move(100) ;
     else move(1) ;
  }
}
mainWindow::mainWindow() 
{
  map = new mapView ;
  map->setFocusPolicy(Qt::StrongFocus) ;