Qt滑鼠事件

2022-06-30 00:57:09 字數 925 閱讀 8088

1、滑鼠事件有哪些?預設如何觸發?

查文件;查文件,注意mousemoveevent預設是滑鼠按下移動觸發,若要滑鼠移動直接觸發,則需要setmousetraching(true)

2、預設訊息響應是什麼?如何自定義響應?

查文件;繼承過載

3、多個接收者,滑鼠事件預設接收者是誰?如何自定義接收者?

缺省會被頂層視窗消費,父視窗要接收,需要在子視窗訊息響應函式中呼叫event->ignore()

4、父視窗沒有對訊息作出響應,有哪些可能的原因?

a.子視窗沒有event->ignore

b.子視窗設定了qt::wa_nomousepropagation屬性

5、disable狀態對滑鼠事件的影響(子視窗不設ignore)?

父視窗setmousetracking(true),子視窗setdisabled(true),此時,

a.滑鼠移動到子視窗,父視窗不響應move事件;單擊拖動時,父視窗響應move事件

b.子視窗追加setmousetracking(true),滑鼠移動到子視窗,父視窗響應move事件;單擊拖動時,父視窗也響應move事件

6、如何確定是哪個滑鼠鍵被按下?

呼叫event->button()或event->buttons()

7、如何確定滑鼠座標位置(相對於事件接收視窗和相對於桌面)?

a.函式pos()、x()和y()給出了相對於接收滑鼠事件的widget的游標位置。

b.如果由於滑鼠事件而移動widget,則使用globalpos()返回的全域性位置以避免抖動。

globalpos返回滑鼠在事件發生時的全域性位置。這在x11這樣的非同步視窗系統上很重要。每當由於滑鼠事件而移動widget時,globalpos()可能與當前指標位置qcursor::pos()和qwidget::maptoglobal(pos())有很大的不同。(遇到再補充)

Qt滑鼠事件總結

滑鼠按下事件void qwidget mousepressevent qmouseevent event elseif event button qt rightbutton elseif event button qt midbutton 滑鼠移動事件void qwidget mousemovee...

Qt的滑鼠事件

qt裡常用的滑鼠事件有mousepressevent mousemoveevent mousereleaseevent mousedoubleclickevent滑鼠事件方法。void mousepressevent qmouseevent e void mousemoveevent qmousee...

Qt 滑鼠事件和滾輪事件

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