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

2022-02-20 16:08:32 字數 2474 閱讀 4944

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

qmouseevent 的傳遞

多個重疊的視窗在實現裡好比乙個遞迴的倒立樹,滑鼠事件會沿著滑鼠指標所在的父視窗的鍊錶向上傳遞,直到某個視窗呼叫 accept() 函式進行事件處理,否則該事件將被過濾銷毀掉。

滑鼠事件例項

滑鼠事件使用的時候,加標頭檔案 ,然後在標頭檔案中重寫這些函式:

#include protected:

// 滑鼠按下事件

void mousepressevent(qmouseevent * event);

// 滑鼠釋放事件

void mousereleaseevent(qmouseevent *event);

// 滑鼠移動事件

void mousemoveevent(qmouseevent *event);

然後就是在原始檔中去實現具體的邏輯了:

// 滑鼠按下事件

void mainwindow::mousepressevent(qmouseevent * event)

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

// 獲取按下時的滑鼠指標座標

qdebug() << event->x() << ":" << event->y();

}// 滑鼠釋放事件

void mymouseevent::mousereleaseevent(qmouseevent *event)

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

// 獲取釋放時的滑鼠指標座標

qdebug() << "release:" << event->x() << " " << event->y();

}// 滑鼠移動事件

void mymouseevent::mousemoveevent(qmouseevent *event)

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

// 獲取移動過程中的滑鼠指標座標

qdebug() << "move:" << event->x() << " " << event->y();

}

輸出如下所示:

15:49:08: starting f:\project\c++ project\qt\build-mymouseevent-desktop_qt_5_9_7_mingw_32bit-debug\debug\mymouseevent...

左鍵按下

press: 96 75

左鍵釋放

release: 100 98

move: 75 81

move: 76 81

還有乙個滑鼠雙擊事件 mousedoubleclickevent() ,與滑鼠按下事件大同小異,這裡就不再詳細講解了。

qmouseevent 常用成員函式

qwheelevent 類用來表示滑鼠滾輪事件,包含用於描述滑鼠滑輪事件的相關引數。函式原型:

qwheelevent::qwheelevent(const qpoint &pos, int delta, qt::mousebuttons buttons,qt::keyboardmodifiers modifiers, qt::orientation orient = qt::vertical )
功能與引數:

/*** 建立乙個wheelevent物件, ***/

(1)引數pos代表滑鼠指標在視窗中的當前位置,通常用globalpos()初始化qcursor::pos(),但並不總是正確的。如果需要顯示指定乙個全域性位置,可以用其他的建構函式;

(2)引數button用於描述在滑鼠事件過程中滑鼠按鍵的狀態(state);

(3)delta()可以返回滑動的距離,正數值表示滑輪相對於使用者在向前滑動,相反,負數值表示滑輪相對於使用者是向後滑動的。;

(4)引數modifiers用於描述在滑鼠事件中滑鼠狀態位改變時的引數值(比如滑鼠的左中右按鍵的切換);

(5)引數orient用於指示滑鼠滑輪滾動的方向(水平或者垂直)。

示例如下:

// 滾輪事件

void mymouseevent::wheelevent(qwheelevent *event)

else // 當滾輪向下滑,靠近使用者

}

使用者向上滑動滑鼠,則放大;而向下滑動滑鼠,則縮小。

參考:

qt學習筆記5:qmouseevent滑鼠事件簡介

Qt 滑鼠事件和滾輪事件

幾乎現在見到的桌面應用都用到了滑鼠,少了滑鼠的應用,操作起來會異常的麻煩。那麼在qt中怎麼引入滑鼠操作呢。在桌面上按下滑鼠或者是移動滑鼠的指標時,都會產生對應的滑鼠事件。滑鼠的組成除了滑鼠之外還有滾輪,同時滾輪的滾動也有自己的事件。在qt中qmouseevent類用來產生滑鼠事件。利用這個事件可以判...

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 在滾輪事件處理函式中,使...