Qtのコントロール - マウス
ナビゲーションに移動
検索に移動
概要
Qtにおいて、マウスイベントを処理する手順を記載する。
マウスボタンの押下
QWidgetまたはその派生クラスにおいて、マウスイベントが発生する時、シグナルが発行されるのではなく、コールバックが呼び出される。
以下の例では、マウスイベントの各コールバックを示している。
mouseMoveEvent
イベントハンドラは、マウスのいずれかのボタンが押下した時に呼び出される。
このイベントは、mouseTracking
プロパティで制御されており、初期値はfalse
である。
もし、マウスを移動させずにmouseMoveEvent
イベントハンドラを発生させる場合は、setMouseTracking(true)
を呼び出す。
※注意
その座標に存在するオブジェクトが使用したイベントは、mousePressEvent
では受け取れない。
イベント一括処理で破棄されたイベントは受け取れない。
// Mainwindow.h
// ...略
protected:
void mousePressEvent(QMouseEvent *pEevent);
void mosueReleaseEvent(QMouseEvent *pEevent);
void mouseMoveEvent(QMouseEvent *pEevent);
void wheelEvent(QMouseEvent *pEevent);
// MainWindow.cpp
// ボタンを押下した時のコールバック
void MainWindow::mousePressEvent(QMouseEvent *pEvent)
{
if( pEvent->button() == Qt::LeftButton)
//if(pEvent->buttons() & Qt::LeftButton) // 複数のボタンを押下する場合
{ // マウスの左ボタンを押下した場合
}
else if(pEvent->button() == Qt::RightButton)
{ // マウスの右ボタンを押下した場合
}
else if(pEvent->button() == Qt::MiddleButton)
{ // マウスの中ボタンを押下した場合
}
// マウスのボタンが押下された位置を取得する
QPoint pntLastPos = pEvent->pos();
}
// マウスのいずれかのボタンを離した場合のコールバック
void MainWindow::mosueReleaseEvent(QMouseEvent *pEvent)
{
}
// マウスが移動した場合のコールバック
void MainWindow::mouseMoveEvent(QMouseEvent *pEvent)
{
}
// マウスホイールを回した場合(引数の型がQWheelEvent)
void MainWindow::wheelEvent(QWheelEvent *pEvent)
{
// マウスホイールの前方 : 正の値
// マウスホイールの後方 : 負の値
// QWheelEventクラスのdeltaメソッドの値 : マウスホイールを回した角度の8倍の値
// 標準的なマウスでは1ステップ15度のため、8 * 15 = 120で除算する
double dSteps = (double)pEvent->delta() / 120.0;
}
表. マウスボタン定義 [enum Qt::MouseButton]
定義 | 説明 |
---|---|
Qt::NoButton | なし |
Qt::AllButtons | 全てのマウスボタン |
Qt::LeftButton | 左ボタン |
Qt::RightButton | 右ボタン |
Qt::MiddleButton | 中央ボタン |