日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt系列文章之 mousePressEvent

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt系列文章之 mousePressEvent 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章介紹QTabWidget的使用技巧。本文開始介紹Qt最常用的事件之一QMouseEvent。

鼠標事件 mousePressEvent

鼠標事件是Qt中十分重要的人機交互形式。鼠標事件包括很多內容,此處先介紹最基本的mousePressEvent事件函數。如前期文章所示,Qt中的大部分事件函數都已經提供了函數接口,我們只需要在具體項目類中對這些事件函數進行具體實現即可。
打開Qt的widget幫助文檔,可以找到mousePressEvent的函數定義如下所示:

mousePressEvent是一個虛函數,通過在子類之中對其進行實現來關聯具體的鼠標動作。第一步需要在mainWindow中定義一個mousePressEvent(QMouseEvent *event),注意虛函數的形參類型不能修改,只能是QMouseEvent *,函數定義時后面加上override表示對虛函數進行重新實現。
Cpp之中對mousePressEvent進行實現。

void mainWindow::mousePressEvent(QMouseEvent *event) {return QMainWindow::mousePressEvent(event); //將事件操作權返回給父類 }

在事件之中添加一個簡單的打印輸出,event事件對象,此處輸出鼠標在界面的位置pos(),pos函數給出的是窗口坐標系下的位置而不是桌面坐標下的位置,此函數是比較重要的鼠標事件函數,用于定位鼠標位置:

qDebug()<<"mouse clicked "<<event->pos();

編譯運行代碼,在界面隨便點擊鼠標,不論是點擊左中右鍵都會輸出一條信息:

如果我們只希望捕獲鼠標左鍵點擊事件,那么在事件處理函數中使用如下的代碼過濾掉其他鼠標鍵輸入。button()函數輸出鼠標點擊的鍵值。此時再點擊鼠標右鍵或者中鍵不會有反應。

if(event->button()==Qt::LeftButton){qDebug()<<"mouse clicked "<<event->pos();}

下面給鼠標動作加一些復雜的動作,我們先在ui的tab_2添加一個居中的tableWidget,命名為mouseControlTable:

此時table是一個空的表格,我們先給表格添加兩列:

下面通過數表動作來動態為表格修改行數,假設點擊鼠標左鍵我們為表格增加一行,點擊鼠標右鍵為表格刪除一行。

void mainWindow::mousePressEvent(QMouseEvent *event) {int tableRowCount = ui->mouseControlTable->rowCount();if(event->button()==Qt::LeftButton){ui->mouseControlTable->insertRow(tableRowCount);}if(event->button()==Qt::RightButton){if(tableRowCount) ui->mouseControlTable->setRowCount(tableRowCount-1);}return QMainWindow::mousePressEvent(event); //將時間操作權返回給主函數 }

此時在界面上如果點擊左鍵,表格會動態增加一行,如果點擊右鍵,表格會動態減少一行。

不過有心的您會發現,當您點擊表格區域時,什么動作都不會發生。 那是因為QTableWidget本身就有自己的mouseEvent虛函數,我們并沒有對其進行定義。為了實現在表格上點擊鼠標操作(如復制粘貼等動作),我們需要對表格類QTableWidget進行繼承開發新類,并書寫mouseEvent方法,然后將ui中拉入QTableWidget控件提升為自己開發的新類型。 這些將在下一篇帖子進行介紹。


歡迎同好溝通交流,批評指正,歡迎關注我的公號:不如起而行之

總結

以上是生活随笔為你收集整理的Qt系列文章之 mousePressEvent的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。