【Qt】Mouse and Key Event


【目的】

  • 取得滑鼠位置。
  • 取得使用者按下按鍵。

【程式】
擷取片段重點。

  • 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)。

【參考】

 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com