鼠标事件

    void mousePressEvent(QMouseEvent *event);        //单击
void mouseReleaseEvent(QMouseEvent *event); //释放
void mouseDoubleClickEvent(QMouseEvent *event); //双击
void mouseMoveEvent(QMouseEvent *event); //移动
void wheelEvent(QWheelEvent *event); //滑轮

  

鼠标事件使用的时候,加头文件

#include <QMouseEvent>

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

  

键盘事件

    void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);

  

键盘事件使用时,加头文件

#include <QKeyEvent>
// 键盘按下事件
void Widget::keyPressEvent(QKeyEvent *event)
{
// 是否按下Ctrl键 特殊按键
if(event->modifiers() == Qt::ControlModifier){ // 是否按下M键 普通按键 类似
if(event->key() == Qt::Key_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; ··· }
}

  

最新文章

  1. Web APi 2.0优点和特点?在Web APi中如何启动Session状态?
  2. 图解JVM的Class文件格式(详细版)
  3. 23. javacript高级程序设计-数据存储
  4. Java文件操作①——XML文件的读取
  5. ExtJS-Viewport背景图片铺满浏览器视图并自动伸缩
  6. 刻意练习,逃离舒适区——怎么样成为一个高手[罗辑思维]No.183_知识笔记
  7. mybatis0210 mybatis和ehcache缓存框架整合
  8. Extjs4.2——Panel
  9. ios中键值编码kvc和键值监听kvo的特性及详解
  10. 对于bilibili主页head部分的代码的总结以及疑问。
  11. C++ 动态生成对象
  12. C#学习笔记---C#操作SQL数据库
  13. Xamarin 自定义 ToolbarItem 溢出菜单实现(Popover/Popup) 弹出下拉效果
  14. fg、bg、jobs、&amp;、nohup、ctrl+z、ctrl+c 命令
  15. 高性能Nginx服务器-负载均衡
  16. 终端FQ
  17. python之路----验证客户端合法性
  18. activiti表
  19. [label][javascript-Unit Test][JSLint]A Guide To JSLint Messages
  20. libcaffe.so.1.0.0: cannot open shared object file: No such file or directory 运行时报错

热门文章

  1. SQL Server 数据类型映射(转载)
  2. 二进制值和十六进制字符串相互转换的C++代码
  3. Web应用架构入门之11个基本要素
  4. Python3.4:splinter or traceback
  5. 【工具相关】Web-XAMPP的安装
  6. REM在edge浏览器中不重新计算解决
  7. Mobile first! Wijmo 5 + Ionic Framework之:费用跟踪 App
  8. TraceView工具的使用
  9. springcloud 入门 7 (zuul路由网关)
  10. Java 数据驱动测试