Qt4:マウスの監視


Qt4:百の定石


カーソルを選択して動かすには当然マウスのイベントを監視しなければなりません。

  • マウスがボタンが押された時にmousePressEvent?() が発生する。
  • マウスのどのボタンが押されているのかを button() で見る。
  • 一緒にキーが押されているかどうか modifiers() で見る。
  • マウスのボタンが押されたまま動くとmouseMoveEvent?() が発生する。
  • マウスの位置を x(), y(), pos() で知る。 マウスの監視はこんな感じです。
  • ex. シフトボタンと一緒にマウスが左ボタンが押された時にカーソルを動かす。
void hogehoge::mousePressEvent(QMouseEvent *e)
{
  if (e->button() & Qt::LeftButton){
     if (e->modifiers() & Qt::ShiftModifier){
          //マウスがカーソルの範囲かどうかチェックする(自分で用意)
           if (isCursorHitted(e->x(), e->y())) cursor_selected = true  ;		
          else cursor_selected = false ;
     }
  }
}
void hogehoge::mouseMoveEvent(QMouseEvent *e)
{
  if (e->buttons() ==Qt::LeftButton){
     if (e->modifiers() & Qt::ShiftModifier){
	 if (cursor_selected){
             cursor_move(e->x(), e->y()) ;
            repaint() ;// paintEvent() を発生させる。
         }
}
void hogehoge::paintEvent(QPaintEvent *e)
{
	drawCursor() ; //自分で用意する
}