Qt 滑鼠事件和滾輪事件

2021-08-20 22:18:02 字數 1603 閱讀 2370

幾乎現在見到的桌面應用都用到了滑鼠,少了滑鼠的應用,操作起來會異常的麻煩。那麼在qt中怎麼引入滑鼠操作呢。在桌面上按下滑鼠或者是移動滑鼠的指標時,都會產生對應的滑鼠事件。滑鼠的組成除了滑鼠之外還有滾輪,同時滾輪的滾動也有自己的事件。在qt中qmouseevent類用來產生滑鼠事件。利用這個事件可以判斷時哪個鍵按下了以及指標的當前位置。qwheelevent類用來表示滑鼠滾輪事件,主要控制的時滾輪的滾定方向和距離。

接下來主要是兩種類的使用,新建qt widgets應用,專案名稱為mynmoouseevent,基類選擇qwidget保持類名不變,在設計模式始終拖入textedit。然後在widget.h檔案中進行protected函式宣告

protected:

void

mousepressevent(qmouseevent *event);

void mousereleaseevent(qmouseevent *event);

void mousedoubleclickevent(qmouseevent *event);

void mousemoveevent(qmouseevent *event);

void wheelevent(qwheelevent *event);

然後在private中新增乙個變數用來儲存指標位置與視窗位置的差距。

qpoint offset;
最後新增標頭檔案

#include
形成的widget.cpp是這樣的:

#include "widget.h"

#include "ui_widget.h"

#include

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

widget::~widget()

void widget::mousepressevent(qmouseevent *event) // 滑鼠按下事件

else

if(event->button() == qt::rightbutton)

}void widget::mousemoveevent(qmouseevent *event) // 滑鼠移動事件

}void widget::mousereleaseevent(qmouseevent *event) // 滑鼠釋放事件

void widget::mousedoubleclickevent(qmouseevent *event) // 滑鼠雙擊事件

}void widget::wheelevent(qwheelevent *event) // 滾輪事件

else

}

在滾輪事件的處理函式中,使用qwheelevent類的delta()函式獲取了滾輪的移動距離,每當滾輪移動一下,預設15°,而delta函式的返回值事15x8即整數120。向上滾動滑鼠返回正值,向下返回負值。而在這裡需要說明一下,滑鼠的移動事件預設是在滑鼠按下才啟動的,如果想不按下就獲得就要在建構函式後新增一行**:set mouse tracking(true)

Qt 滑鼠事件和滾輪事件

qmouseevent類表示乙個滑鼠事件,視窗中的按下,移動都會產生滑鼠事件。qwheelevent用來表示滾輪事件,獲取滾輪的移動方向和距離。本案例效果 在文字框與框外滑鼠樣式改變,雙擊全屏,右擊樣式改變滑輪縮放文字框內內容。h ifndef widget h define widget h in...

QT關於滑鼠滾輪事件

首先在標頭檔案中宣告 include進行protected函式宣告 protected void wheelevent qwheelevent event 實現函式 滾輪事件 void mainwindow wheelevent qwheelevent event else 在滾輪事件處理函式中,使...

Qt事件系統之二 滑鼠事件和滾輪事件

qmouseevent 類用來表示乙個滑鼠事件,當在視窗部件中按下滑鼠 釋放滑鼠和移動滑鼠指標時,都會產生滑鼠事件 qmouseevent。利用 qmouseevent 類可以獲知滑鼠是哪個鍵按下釋放了 滑鼠指標的當前位置等資訊。通常是重定義視窗部件的滑鼠事件處理函式來進行一些自定義的操作。qmou...