【目的】
- 取得滑鼠位置。
- 取得使用者按下按鍵。
【程式】
擷取片段重點。
- mainwindow.h ( 主要是要重載 event )
class MainWindow : public QMainWindow { ... private: Ui::MainWindow *ui; void keyPressEvent(QKeyEvent *); void mouseMoveEvent(QMouseEvent *); void MousePressEvent(QMouseEvent *); ... };
- mainwindow.cpp ( 實作重載的 event)
#include <QKeyEvent> #include <QtDebug> #include <Qt> ... void MainWindow::keyPressEvent(QKeyEvent *ke) { qDebug()<< "nativeScanCode: " << ke->nativeScanCode() <<endl; qDebug()<< "key: "<< ke->key() <<endl; } void MainWindow::mouseMoveEvent(QMouseEvent *me) { setMouseTracking(true); if (me->buttons() == Qt::RightButton) { qDebug() << "RightButtom"; } else if (me->buttons() == Qt::LeftButton) { qDebug() << "LeftButton"; } else if (me->buttons() == Qt::MidButton) { qDebug() << "MidButton"; } qDebug() << "Mouse(x,y):" << me->x() << me->y(); } void MainWindow::MousePressEvent(QMouseEvent *me) { qDebug() << "Mouse(x,y):" << me->x() << me->y(); }
- Press Key "A"
nativeScanCode: 30 key: 65
- Drag-and-drop Mouse and hold mouse’s left button
LeftButton Mouse(x,y): 257 164
- setMouseTracking 動作結果和想像中不同。
- MousePressEvent 動作結果和想像中不同。
- 如何在沒有鍵盤/滑鼠的手機(i.e. Nokia 5800)得到使用者的輸入(手勢;Gesture)。
【參考】
- Qt4 Gossip: 拖放的執行與接受
http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/DragExecAccept.html - ASCII Chart
http://www.jimprice.com/jim-asc.shtml#keycodes - Linux Keycode Table
http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlkeycodes.html - 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针
http://www.yafeilinux.com/?p=43 - 使用Toolbar API - S60 Touch UI
http://wiki.forum.nokia.com/index.php/使用Toolbar_API_-_S60_Touch_UI