Qt Creator中滑鼠鍵盤事件的處理實現自定義滑鼠指標

洛欣發表於2010-05-18

宣告:本文原創於yafeilinux的百度部落格,http://hi.baidu.com/yafeilinux 轉載請註明出處。

我們前面一直在說訊號,比方說用滑鼠按了一下按鈕,這樣就會產生一個按鈕的單擊訊號,然後我們可以在相應的槽函式裡進行相應功能的設定。其實在按下滑鼠後,程式要先接收到滑鼠按下的事件,然後將這個事件按預設的設定傳給按鈕。可以看出,事件和訊號並不是一回事,事件比訊號更底層。而我們以前把單擊按鈕也叫做事件,這是不確切的,不過大家都知道是什麼意思,所以當時也沒有細分。

Qt中的事件可以在QEvent中檢視。下面我們只是找兩個例子來進行簡單的演示。

1.還是先建立一個Qt4 Gui Application工程,我這裡起名為event。

2.新增程式碼,讓程式中可以使用中文。

即在main.cpp檔案中加入#include 的標頭檔案包含。

再在下面的主函式裡新增QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

3.在mainwindow.h檔案中做一下更改。

新增#include 標頭檔案。因為這樣就包含了QtGui中所有的子檔案。

在public中新增兩個函式的宣告

void mouseMoveEvent(QMouseEvent *);

void keyPressEvent(QKeyEvent *);

4.我們在mainwindow.ui中新增一個Label和一個PushButton,將他們拉長點,因為一會要在上面顯示標語。

5.在mainwindow.cpp中的建構函式裡新增兩個部件的顯示文字。

ui->label->setText(tr("按下鍵盤上的A鍵試試!"));

ui->pushButton->setText(tr("按下滑鼠的一個鍵,然後移動滑鼠試試"));

6.然後在下面進行兩個函式的定義。

/*以下是滑鼠移動事件*/

void MainWindow::mouseMoveEvent(QMouseEvent *m)

{//這裡的函式名和引數不能更改

QCursor my(QPixmap("E:/Qt/Qt-Creator-Example/event/time.png"));

//為滑鼠指標選擇圖片,注意這裡要用絕對路徑,且要用“/”,而不能用“\”

QApplication::setOverrideCursor(my);

//將滑鼠指標更改為自己設定的圖片

int x = m->pos().x();

int y = m->pos().y();

//獲取滑鼠現在的位置座標

ui->pushButton->setText(tr("滑鼠現在的座標是(%1,%2), 哈哈好玩吧").arg(x).arg(y));

//將滑鼠的位置座標顯示在按鈕上

ui->pushButton->move(m->pos());

//讓按鈕跟隨滑鼠移動

}

/*以下是鍵盤按下事件*/

void MainWindow::keyPressEvent(QKeyEvent *k)

{

if(k->key() == Qt::Key_A) //判斷是否是A鍵按下

{

ui->label->setPixmap(QPixmap("E:/Qt/Qt-Creator-Example/event/linux.jpg"));

ui->label->resize(100,100);

//更改標籤圖片和大小

}

}

注意:這兩個函式不是自己新建的,而是對已有函式的重定義,所有函式名和引數都不能改。第一個函式對滑鼠移動事件進行了重寫。其中實現了滑鼠指標的更改,和按鈕跟隨滑鼠移動的功能。

第二個函式對鍵盤的A鍵按下實現了新的功能。

效果如下。

Qt Creator中滑鼠鍵盤事件的處理實現自定義滑鼠指標

按下滑鼠的一個鍵,並移動滑鼠。


Qt Creator中滑鼠鍵盤事件的處理實現自定義滑鼠指標

按下鍵盤上的A鍵。


Qt Creator中滑鼠鍵盤事件的處理實現自定義滑鼠指標

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662983/,如需轉載,請註明出處,否則將追究法律責任。

相關文章