「Qtのコントロール - マウス」の版間の差分
		
		
		
		
		
		ナビゲーションに移動
		検索に移動
		
				
		
 
		
	
| 編集の要約なし | 細 (文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…) | ||
| 90行目: | 90行目: | ||
| </center> | </center> | ||
| <br><br> | <br><br> | ||
| {{#seo: | |||
| |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
| |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
| |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
| |image=/resources/assets/MochiuLogo_Single_Blue.png | |||
| }} | |||
| __FORCETOC__ | __FORCETOC__ | ||
| [[カテゴリ:Qt]] | [[カテゴリ:Qt]] | ||
2024年10月14日 (月) 10:58時点における版
概要
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 | 中央ボタン |