Qt系列文章之 mousePressEvent
上一篇文章介紹QTabWidget的使用技巧。本文開始介紹Qt最常用的事件之一QMouseEvent。
鼠標事件 mousePressEvent
鼠標事件是Qt中十分重要的人機交互形式。鼠標事件包括很多內容,此處先介紹最基本的mousePressEvent事件函數。如前期文章所示,Qt中的大部分事件函數都已經提供了函數接口,我們只需要在具體項目類中對這些事件函數進行具體實現即可。
打開Qt的widget幫助文檔,可以找到mousePressEvent的函數定義如下所示:
mousePressEvent是一個虛函數,通過在子類之中對其進行實現來關聯具體的鼠標動作。第一步需要在mainWindow中定義一個mousePressEvent(QMouseEvent *event),注意虛函數的形參類型不能修改,只能是QMouseEvent *,函數定義時后面加上override表示對虛函數進行重新實現。
Cpp之中對mousePressEvent進行實現。
在事件之中添加一個簡單的打印輸出,event事件對象,此處輸出鼠標在界面的位置pos(),pos函數給出的是窗口坐標系下的位置而不是桌面坐標下的位置,此函數是比較重要的鼠標事件函數,用于定位鼠標位置:
qDebug()<<"mouse clicked "<<event->pos();編譯運行代碼,在界面隨便點擊鼠標,不論是點擊左中右鍵都會輸出一條信息:
如果我們只希望捕獲鼠標左鍵點擊事件,那么在事件處理函數中使用如下的代碼過濾掉其他鼠標鍵輸入。button()函數輸出鼠標點擊的鍵值。此時再點擊鼠標右鍵或者中鍵不會有反應。
下面給鼠標動作加一些復雜的動作,我們先在ui的tab_2添加一個居中的tableWidget,命名為mouseControlTable:
此時table是一個空的表格,我們先給表格添加兩列:
下面通過數表動作來動態為表格修改行數,假設點擊鼠標左鍵我們為表格增加一行,點擊鼠標右鍵為表格刪除一行。
此時在界面上如果點擊左鍵,表格會動態增加一行,如果點擊右鍵,表格會動態減少一行。
不過有心的您會發現,當您點擊表格區域時,什么動作都不會發生。 那是因為QTableWidget本身就有自己的mouseEvent虛函數,我們并沒有對其進行定義。為了實現在表格上點擊鼠標操作(如復制粘貼等動作),我們需要對表格類QTableWidget進行繼承開發新類,并書寫mouseEvent方法,然后將ui中拉入QTableWidget控件提升為自己開發的新類型。 這些將在下一篇帖子進行介紹。
歡迎同好溝通交流,批評指正,歡迎關注我的公號:不如起而行之
總結
以上是生活随笔為你收集整理的Qt系列文章之 mousePressEvent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 竞斗云2.0刷机-编程器刷入opboot
- 下一篇: 时尚竞聘求职简历PPT模板