鼠标事件

  1. void mousePressEvent(QMouseEvent *event); //单击
  2. void mouseReleaseEvent(QMouseEvent *event); //释放
  3. void mouseDoubleClickEvent(QMouseEvent *event); //双击
  4. void mouseMoveEvent(QMouseEvent *event); //移动
  5. void wheelEvent(QWheelEvent *event); //滑轮

  

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

  1. #include <QMouseEvent>
  1.  
  1. ···
  1. // 鼠标按下事件
  2. void Widget::mousePressEvent(QMouseEvent *event)
  3. {
  4. // 如果是鼠标左键按下 改变指针形状,并且存储当前指针位置与窗口位置的差值。
  5. if(event->button() == Qt::LeftButton){
  6.  
  7. ···
  8. }
  9.  
  10. // 如果是鼠标右键按下
  11. else if(event->button() == Qt::RightButton){
  12.  
  13. ···
  14. }
  15. }
  16.  
  17. // 鼠标移动事件 默认情况下,触发事件需要点击一下,才能触发。可设置为自动触发:setMouseTracking(true);
  18. void Widget::mouseMoveEvent(QMouseEvent *event)
  19. {
  20. // 这里必须使用buttons()
  21. if(event->buttons() & Qt::LeftButton){ //进行的按位与
  22.  
  23. ···
  24. }
  25. }
  26.  
  27. // 鼠标释放事件
  28. void Widget::mouseReleaseEvent(QMouseEvent *event)
  29. {
  30. ···
  31. }
  32.  
  33. // 鼠标双击事件
  34. void Widget::mouseDoubleClickEvent(QMouseEvent *event)
  35. {
  36. // 如果是鼠标左键按下
  37. if(event->button() == Qt::LeftButton){
  38.  
  39. ···
  40.  
  41. }
  42. }
  43.  
  44. // 滚轮事件
  45. void Widget::wheelEvent(QWheelEvent *event)
  46. {
  47. // 当滚轮远离使用者时
  48. if(event->delta() > 0){
  49. ···
  50. }else{//当滚轮向使用者方向旋转时
  51. ···
  52. }
  53. }

  

键盘事件

  1. void keyPressEvent(QKeyEvent *event);
  2. void keyReleaseEvent(QKeyEvent *event);

  

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

  1. #include <QKeyEvent>
  1. // 键盘按下事件
  2. void Widget::keyPressEvent(QKeyEvent *event)
  3. {
  4. // 是否按下Ctrl键 特殊按键
  5. if(event->modifiers() == Qt::ControlModifier){
  6.  
  7. // 是否按下M键 普通按键 类似
  8. if(event->key() == Qt::Key_M)
  9. ···
  10. }
  11. else QWidget::keyPressEvent(event); //保存默认事件
  12.  
  13. //如果是处理两个普通按键,得避免自动重复,释放中也要处理
  14. if(event->key() == Qt::Key_Up){
  15.  
  16. // 按键重复时不做处理
  17. if(event->isAutoRepeat()) return;
  18.  
  19. // 标记向上方向键已经按下
  20. keyUp = true;
  21.  
  22. }else if(event->key() == Qt::Key_Left){
  23. if(event->isAutoRepeat()) return;
  24. keyLeft = true;
  25. }
  26. }
  27.  
  28. // 按键释放事件
  29. void Widget::keyReleaseEvent(QKeyEvent *event)
  30. {
  31. ···
  32.  
  33. //如果是处理两个普通按键,得避免自动重复
  34. if(event->key() == Qt::Key_Up){
  35. if(event->isAutoRepeat()) return;
  36.  
  37. ···
  38.  
  39. }
  40. else if(event->key() == Qt::Key_Left){
  41. if(event->isAutoRepeat()) return;
  42.  
  43. ···
  44.  
  45. }
  46. }

  

QT 11 鼠标键盘事件添加的更多相关文章

  1. 【转】Qt鼠标键盘事件

    http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...

  2. Linux 模拟 鼠标 键盘 事件

    /************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...

  3. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  4. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  5. Tkinter 鼠标键盘事件(一)

    一: 鼠标事件 <Button-1>                                                                     鼠标左键单击 ...

  6. Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

    一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...

  7. openGL 初试 绘制三角形 和添加鼠标键盘事件

    code: #include <gl/glut.h> #include <stdlib.h> void render(void); void keyboard(unsigned ...

  8. Qt中的键盘事件,以及焦点的设置(比较详细)

    Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效.下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件.有输入焦点的窗口是活动窗口 ...

  9. Javascript鼠标键盘事件

    鼠标事件click:单击dblclick:双击mousedown:鼠标按下mouseup:鼠标抬起mouseover:鼠标悬浮mouseout:鼠标离开mousemove:鼠标移动mouseenter ...

随机推荐

  1. c#英文大小写快捷键

    选中一段英文 Ctrl+U 转小写 Ctrl+Shift+U 转大写

  2. 为什么要先装IIS后装.Net Framework?

    1.动态页面和静态页面的区别 动态页面(动态网站):通过C#代码(或别的语言)与服务器的交互的实现(比如新建一个ashx一般处理程序中的C#代码就可以和服务器实现交互,修改数据库,上传图片等都属于和服 ...

  3. 在C语言结构体中添加成员函数

    我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结 ...

  4. 汇编语言--CPU资源和存储器(二)

    二.CPU资源和存储器 需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口. 1.寄存器组 (1)16位寄存器组 16位CPU所含有的寄存器有(见图2.1中16位寄存器部分): 4个数据寄存 ...

  5. 洛谷P4438 [HNOI/AHOI2018]道路(dp)

    题意 题目链接 Sol 每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅 读题比做题用时长系列... \(f[i][a][b]\)表示从根到\(i\)的路径上,有\(a\) ...

  6. Node.js+Koa开发微信公众号个人笔记(二)响应事件

    微信公众号中的事件有订阅事件/扫码事件/点击事件/跳转链接事件等等,具体可以查阅文档. 这里来实现一下订阅事件,其他的事件的实现过程也都类似. 当有人订阅了公众号后,微信服务器会向我们的服务器推送一个 ...

  7. parseInt转换

    function parse2Int(num) { return parseInt(num,10); } 如果 string 以 "0x" 开头,parseInt() 会把 str ...

  8. 14.python与数据库之mysql:pymysql、sqlalchemy

    相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 删除表 插入数据 查看数据 修改数据 删除数据 使用sqlmary操作mysql 创建表 查看表 修改表 删除表 插入数据 查 ...

  9. Access删除某一字段重复的数据但是要保留一条

    如下图所示,Checktime这个字段有很多重复数据,我需要把所有Checktime这个字段重复的都删掉,但是还需要保留一条: 在Access做删除查询怎么做呀,来个Access高手,复制粘贴党请手下 ...

  10. python第一百零二天-----第十七周作业

    由于内容众多 直接使用 git 链接 : https://github.com/uge3/hosts_masg 主机管理WEB页面 使用 SQLALchemy 主机管理(8列) ip 用户表: 用户名 ...