QT5的滑鼠事件和滾輪事件

2021-08-04 18:51:44 字數 2671 閱讀 3117

使用qt5的滑鼠事件和滾輪事件

----完成滑鼠左鍵拖動視窗,雙擊全屏,滾輪放大縮小視窗大小

這裡使用的是qmouseevent類裡面的滑鼠事件,通常進行重定義部件的滑鼠事件處理函式來實現自定義的內容操作。同樣,滑鼠滾輪操作是利用qwheelevent實現滾輪事件。

其中:[cpp]view plain

copy

voidmousepressevent(qmouseevent *event);這個是滑鼠按下的時候呼叫該函式  

voidmousereleaseevent(qmouseevent *event);這個是滑鼠鬆開按鍵的時候呼叫  

voidmousedoubleclickevent(qmouseevent *event);這個是滑鼠雙擊的時候呼叫  

voidmousemoveevent(qmouseevent *event);這個是滑鼠按下狀態中,移動的時候呼叫  

void wheelevent(qwheelevent*event); 這個是滑鼠上下滾輪的時候會呼叫  

上述滑鼠事件並不完全,但是對於一般我們使用完全足夠了。

通過重定義上述函式來實現滑鼠、滾輪操作後的自定義的內容處理。

現在我們來通過乙個具體的程式來看看如何實現的。

首先,新建工程。我們先新建乙個qt gui應用,專案名稱我命名為qtevent,其他的全部預設。

第二步,新增標頭檔案與變數。我們在mainwindows.h裡新增標頭檔案:

#include

#include

然後再新增:

[cpp]view plain

copy

protected:  

voidmousepressevent(qmouseevent*event);//按下

voidmousemoveevent(qmouseevent*event);//按下移動

voidmousereleaseevent(qmouseevent*event);//鬆開

voidmousedoubleclickevent(qmouseevent*event);//雙擊

voidwheelevent(qwheelevent*event);//滾輪

private:  

qpointoffset;//儲存滑鼠指標位置與視窗位置的差值

qcursorcursor;//建立游標,儲存預設游標形狀

其中offset是為了視窗拖動的需要的變數,用於儲存滑鼠指標位置和視窗位置之間的差值,cursor是為了儲存預設游標形狀,當拖動視窗的時候游標變為手掌,表示進入拖動狀態,如果需要自定義游標圖示,也可以用qcursor類。

第三步,重定義上述宣告的滑鼠滾輪函式。

**如下:

[cpp]view plain

copy

void mainwindow::mousepressevent(qmouseevent*event)  

}  void mainwindow::mousemoveevent(qmouseevent*event)  

}  void mainwindow::mousereleaseevent(qmouseevent*event)  

void mainwindow::mousedoubleclickevent(qmouseevent*event)  

}  void mainwindow::wheelevent(qwheelevent*event)else  

}  

第四步,最終執行**:

同樣的,如果需要用到鍵盤監聽,步驟跟滑鼠監聽是乙個性質,這裡就不再描述。

這裡需要注意的是:全屏模式是會把標題欄都遮蔽掉的,相當於全屏打遊戲的那種全屏,如果只需要實現最大化的功能,那麼只需要把windowfullscreen改為windowmaximized就可以了。

以上**還可以繼續改進:譬如當全屏或者最大化的時候還可以拖動視窗,這顯然是不合理的,所以需要進一步在

mousepressevent()

和mousemoveevent()

新增判斷,如果為全屏

/最大化模式,則不允許拖動。

修改**如下:

……..

…….

…….

if(event->buttons()==qt::leftbutton&&windowstate()!=qt::windowmaximized&&windowstate()!=qt::windowfullscreen){

最後就完善了改進。

如果你覺得系統自帶的標題欄太醜或者不符合口味,你可以根據上面的知識自己遮蔽標題欄,然後實現新增或修改最小化、最大化、關閉按鈕的個性化外觀,最後完成乙個如畫如詩意一般的視窗。

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