網(wǎng)頁即時(shí)聊天seo推廣怎么樣
Qt 入門實(shí)戰(zhàn)教程(目錄)
前驅(qū)文章:
Qt Creator 創(chuàng)建 Qt 默認(rèn)窗口程序(推薦)
什么是事件
事件是對(duì)各種應(yīng)用程序需要知道的由應(yīng)用程序內(nèi)部或者外部產(chǎn)生的事情或者動(dòng)作的通稱。
事件(event)驅(qū)動(dòng)的GUI窗口程序。
例如點(diǎn)擊鼠標(biāo),按下按鍵。 在Qt中使用一個(gè)對(duì)象來表示一個(gè)事件,它繼承自QEvent類。
常見事件
如鼠標(biāo)事件(例如點(diǎn)擊一下鼠標(biāo)左鍵)、鍵盤事件(例如按下鍵盤的某個(gè)鍵)、定時(shí)事件、上下文菜單事件、關(guān)閉事件、拖放事件、繪制事件。
常見事件官方介紹
?
既然事件發(fā)生了,那么我們就需要對(duì)一個(gè)事件進(jìn)行處理,就像我們點(diǎn)擊了一下鼠標(biāo)左鍵,程序就給了我們反饋一樣,那么我們通過什么來對(duì)事件進(jìn)行處理呢?
事件的處理
在QWidget類中提供了很多等待我們?cè)谧宇愔兄貙懙奶摵瘮?shù),通常,我們通過重寫這些函數(shù)來處理一些特定部件的典型事件。
當(dāng)然,我們也可以通過在對(duì)象上安裝事件過濾器。使用事件過濾器可以在一個(gè)界面類中同時(shí)處理不同子部件的不同事件。
鼠標(biāo)按下事件的處理(示例)
創(chuàng)建項(xiàng)目
首先,創(chuàng)建一個(gè)名稱為QtMousePressEvent的Qt默認(rèn)的窗口程序。
參考 : Qt Creator 創(chuàng)建 Qt 默認(rèn)窗口程序
添加鼠標(biāo)事件響應(yīng)函數(shù)
下面我們來嘗試通過響應(yīng)Qt的鼠標(biāo)事件來顯示鼠標(biāo)的坐標(biāo)。
打開Qt Creator >>編輯 >> 項(xiàng)目 >> Headers>> mainwindow.h
右鍵 class MainWindow >> Refactor >> Insert Virtual Function of Base Classes
如下圖所示:
選擇 QWidget >> mousePressEvent
Insertion options:
>> Insert definitions in implementation file >> OK
如下圖所示:
顯示鼠標(biāo)位置
在窗口上添加控件用來顯示鼠標(biāo)的當(dāng)前位置。
打開 Forms >> mainwindow.ui (雙擊打開)
在Ui文件中放置一個(gè)label起名為labelmove用來顯示坐標(biāo)的移動(dòng)
修改 Label 控件的名字為 label_mouse_position
?顯示鼠標(biāo)按下的位置
打開 Sources >> mainwindow.cpp
添加頭文件包含
>> #include <QMouseEvent>
>> MainWindow::mousePressEvent
在該函數(shù)內(nèi)添加下面的代碼:
void MainWindow::mousePressEvent(QMouseEvent *event)
{ui->label_mouse_position->move(event->pos());//鼠標(biāo)點(diǎn)擊哪里,label就在哪里顯示auto pos = event->pos();//獲得鼠標(biāo)點(diǎn)擊的位置QString text = QString("mouse postion (%1, %2)").arg(pos.x()).arg(pos.y());//生成文本內(nèi)容ui->label_mouse_position->setText(text);//設(shè)置label的內(nèi)容,用于顯示ui->label_mouse_position->adjustSize();//根據(jù)內(nèi)容調(diào)整label的大小,以顯示全部內(nèi)容
}
運(yùn)行效果演示
?
代碼下載
百度云
鏈接:https://pan.baidu.com/s/1XgN49hIvVhOLKuB3iLNaJQ
提取碼:1234
Gitee 碼云
https://gitee.com/carea/learn-qt-with-code/tree/master/QtMousePressEvent
更新記錄
2023-08-13 QString格式化使用更加安全規(guī)范的方式