我们可以在QT中监听鼠标的各种事件和键盘的各种事件,在QT中,他已经为我们实现了这一系列的功能了,这个我们可以参考QEvent等事件类了,我这里就做一些简单的实际操作来带领大家认识一下这些有趣的函数;
一.鼠标事件
鼠标事件太多了,我一个个来讲
鼠标左键和右键的区分,以及点击的坐标轴值等,实际上的动作都是点击,所以我们有一个函数
- mousePressEvent
 
所以我们可以在头文件中重写这个函数
protected:
    void mousePressEvent(QMouseEvent * event);
};然后就是在源文件中去实现具体的逻辑了
//鼠标 点击
void MainWindow::mousePressEvent(QMouseEvent * e)
{
    //获取点击的下标
    qDebug() << e->x() << ":" << e->y();
    if(e->button() == Qt::LeftButton)
    {
        qDebug() << "左键" ;
    }
    else if(e->button() == Qt::RightButton)
    {
        qDebug() << "右键" ;
    }
}
这样我们就能获取你点击的时候的轴坐标以及你是左键还是右键了,那么,我们还有那些有趣的函数呢?
- mouseMoveEvent
 - mouseReleaseEvent
 
这两个一个是移动一个是抬起
//鼠标 移动
void MainWindow::mouseMoveEvent(QMouseEvent * e)
{
    qDebug() << "move" << e->x() << ":" << e->y();
}
//鼠标 松开
void MainWindow::mouseReleaseEvent(QMouseEvent * e)
{
    qDebug() << "Release" << e->x() << ":" << e->y();
}大家有兴趣可以试试
以上都是单击的事件,我们再来试试双击的事件
- mouseDoubleClickEvent
 
void mouseDoubleClickEvent(QMouseEvent *event);
//鼠标 双击
void MainWindow::mouseDoubleClickEvent(QMouseEvent *event)
{
    qDebug() << "双击";
}好的,我们再来学习一个滚轮的事件
- wheelEvent
 
//鼠标 滚轮
void MainWindow::wheelEvent(QWheelEvent *event)
{
    if(event->delta()>0)
    {
        qDebug() << "上滚";
    }
    else
    {
        qDebug() << "下滚";
    }
}你可以发现,还是挺简单的, 这些基本上就够用了
二.键盘事件
键盘的事件,我们暂时先学一个就好了,那就是按下
- void keyPressEvent(QKeyEvent *event);
 
至于他,我给大家看一段代码即可
//键盘事件
void MainWindow::keyPressEvent(QKeyEvent * event)
{
    switch (event->key())
    {
    case Qt::Key_Escape:
        qDebug() <<"ESC";
        break;
    case Qt::Key_F1:
        qDebug() <<"F1";
        break;
    case Qt::Key_F2:
        qDebug() <<"F2";
        break;
    case Qt::Key_5:
        qDebug() <<"5";
        break;
    case Qt::Key_Back:
        qDebug() <<"Back";
        break;
    case Qt::Key_Enter:
        qDebug() <<"Enter";
        break;
    case Qt::Key_A:
        qDebug() <<"A";
        break;
    case Qt::Key_B:
        qDebug() <<"B";
        break;
    case Qt::Key_C:
        qDebug() <<"C";
        break;
    default:
        qDebug() << event->key();
        break;
    }
}对应的键值都在Qt类中保存着,也很好判断,当然,我们也还可以判断一些特殊的组合键,这个我希望大家自行去了解一下
最后,依旧要安利一下Qt的助手

嗯,你说你不知道在哪?Qt Assistant,自己在本机上搜下吧。
有兴趣的可以加群:690351511










