導語
事件是對各種應用程式需要知道的由應用程式內部或者外部產生的事情或者動作的通稱。對於初學者,總會對Qt中訊號和事件的概念混淆不清。其實,記住事件比訊號更底層就可以了。比如說,我們用滑鼠按下介面上的一個按鈕,它會發射
clicked()
單擊訊號,但是,它怎麼知道自己被按下的呢,那就是透過滑鼠事件處理的。這裡可以看到,滑鼠事件比訊號更底層。
在Qt中處理事件有多種方法,不過最常用的是重寫Qt事件處理函式。這裡我們就以滑鼠事件和鍵盤事件為例來進行簡單的介紹。
環境是:Windows 7 + Qt 4。8。1 +Qt Creator 2。4。1
目錄
一、滑鼠事件
二、鍵盤事件
正文
一、滑鼠事件
1.新建Qt Gui應用,專案名稱為
myEvent
,基類更改為
QWidget
,類名為
Widget
。
2.完成專案建立後,在設計模式向介面上拖入一個
Push Button
。
3.在
widget。h
檔案新增滑鼠按下事件處理函式宣告:
protected: void mousePressEvent(QMouseEvent *);
4.到
widget。cpp
檔案中先新增標頭檔案包含:
#include
然後在下面新增函式的定義:
void Widget::mousePressEvent(QMouseEvent *e){ ui->pushButton->setText(tr(“(%1,%2)”)。arg(e->x())。arg(e->y()));}
這裡的
arg()
裡的引數分別用來填充%1和%2處的內容,
arg()
是
QString
類中的一個靜態函式,使用它就可以在字串中使用變量了。其中
x()
和
y()
分別用來返回滑鼠游標所在位置的
x
和
y
座標值。這樣,當滑鼠在介面上點選時,按鈕就會顯示出當前滑鼠的座標值。效果如下圖所示。
除了滑鼠按下事件,還有滑鼠釋放、雙擊、移動、滾輪等事件,其處理方式與這個例子是相似的。
【領QT開發教程學習資料,點選下方連結莬費領取↓↓,先碼住不迷路~】
點選→領取「連結」
二、鍵盤事件
1.首先在
widget。h
中新增
protected
函式宣告:
void keyPressEvent(QKeyEvent *);
2.然後到
widget。cpp
中新增標頭檔案包含:
#include
3.最後新增鍵盤按下事件處理函式的定義:
void Widget::keyPressEvent(QKeyEvent *e){ int x = ui->pushButton->x(); int y = ui->pushButton->y(); switch (e->key()) { case Qt::Key_W : ui->pushButton->move(x, y-10); break; case Qt::Key_S : ui->pushButton->move(x, y+10); break; case Qt::Key_A : ui->pushButton->move(x-10, y); break; case Qt::Key_D : ui->pushButton->move(x+10, y); break; }}
這裡我們先獲取了按鈕的位置,然後使用
key()
函式獲取按下的按鍵,如果是指定的W、S、A、D等按鍵時則移動按鈕。所有的按鍵都在
Qt::Key
列舉變數中進行了定義,大家可以在幫助文件中進行檢視。
結語
除了鍵盤按下事件,常用的還有鍵盤釋放事件,這裡就不再舉例。如果想了解更多事件方面的知識,可以參考《Qt Creator快速入門》一書的第6章的內容。