一鼠标事件
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; ··· } }
本文来互联网采集,已注明来源,如未注明来源可能来源未知,如有侵权请联系站长删除处理。