一鼠标事件

1.用鼠标事件,加头文件#include <QMouseEvent>

2.常用函数表

功能 函数 备注
单击 void mousePressEvent(QMouseEvent *event);  分左键  右键
双击 void mouseDoubleClickEvent(QMouseEvent *event);   
移动 void mouseMoveEvent(QMouseEvent *event);  默认触发需要点击,,此处设置自动触发setMouseTracking(true); 
释放 void mouseReleaseEvent(QMouseEvent *event);    
滚轮 void wheelEvent(QWheelEvent *event);  2个转动方向
 void Widget::mousePressEvent(QMouseEvent *event)  //单击 {     if(event->button() == Qt::LeftButton){ //左键按下,改变指针形状存指针位置与窗口位置的差值。         ···     }     else if(event->button() == Qt::RightButton){  //  如果是鼠标右键按下        ···     } }
 void Widget::mouseDoubleClickEvent(QMouseEvent *event)  //双击 {     if(event->button() == Qt::LeftButton){   // // 如果是鼠标左键按下                ···     } }
 void Widget::mouseMoveEvent(QMouseEvent *event)  // 移动 {     // 这里必须使用buttons()     if(event->buttons() & Qt::LeftButton){  //进行的按位与        ···     } }
 void Widget::wheelEvent(QWheelEvent *event)// 滚轮事件 {     if(event->delta() > 0){    // 当滚轮远离使用者时         ···     }else{                     //当滚轮向使用者方向旋转时         ···     } }

二  键盘事件

1.用键盘事件,加头文件#include <QKeyEvent>

2.常用函数表

功能 函数 备注
按下 void Widget::keyPressEvent(QKeyEvent *event)

举例  event->key() == Qt::Key_Up

PS:区分普通按键  /  特殊按键(Ctrl......)

释放 void Widget::keyReleaseEvent(QKeyEvent *event)
 void Widget::keyPressEvent(QKeyEvent *event)     // 键盘按下事件 {     if(event->modifiers() == Qt::ControlModifier){    // 是否按下Ctrl键      特殊按键         if(event->key() == Qt::Key_M)                 // 是否按下M键    普通按键  类似             ···     }     else QWidget::keyPressEvent(event);   //保存默认事件      if(event->key() == Qt::Key_Up){       //如果处理两个普通按键,得避免自动重复,释放中也要处理         if(event->isAutoRepeat()) return; // 按键重复时不做处理         keyUp = true;                     // 标记向上方向键已经按下     }else if(event->key() == Qt::Key_Left){         if(event->isAutoRepeat()) return;         keyLeft = true;     } }
 void Widget::keyReleaseEvent(QKeyEvent *event)   // 按键释放事件 {     ···    if(event->key() == Qt::Key_Up){            //如果是处理两个普通按键,得避免自动重复         if(event->isAutoRepeat()) return;   ···              }     else if(event->key() == Qt::Key_Left){         if(event->isAutoRepeat()) return;        ···      } } 

 

本文来互联网采集,已注明来源,如未注明来源可能来源未知,如有侵权请联系站长删除处理。

发表回复

后才能评论