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