欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

第六章 事件系统

发布时间:2025/3/15 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 第六章 事件系统 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019-9-12

  • 事件
  • 一个事件会有多个事件类型 处理事件的方法: 1)重新实现事件处理函数,只能用来处理特定部件的特定事件 2)重新实现notify函数,一次只能处理一个事件 3)向QApplication安对象装事件过滤器,可以同时处理多个事件 4)重新实现event函数 5)在对象上安装事件过滤器 事件传递: exec函数使应用程序进入事件循环->QEvent子类表示->传递给QObject对象或其子对象这里采用第一种事件处理方法 事件是先传递给指定窗口部件、如果忽略,就会传递给其父部件 QLineEdit::keyPressEvent(event); // 执行QLineEdit类的默认事件处理 //一般都是调用父类的相应事件处理函数来实现默认操作 event->ignore(); // 忽略该事件 事件过滤器: eventFilter(QObject *obj, QEvent *event) // 事件过滤器 obj是被监视的事件,安装了事件过滤器之后,就能对指定的事件进行自己想要的处理,返回true的 话,就可以使一个对象不响应某个事件 lineEdit->installEventFilter(this); // 在Widget上为lineEdit安装事件过滤器 这样我们就将事件过滤器安装到了this之上,以后在this上发生的事件都会经过eventFilter过滤 在本部件上监视lineEdit部件 事件过滤器,焦点部件的event函数,焦点部件的事件处理函数,父部件的事件处理函数
  • 鼠标事件和滚轮事件
  • event->globalPos():是鼠标指针在桌面上的位置 pos():窗口在桌面上的位置,窗口不动的时候,即使鼠标动,它的值也是一样的
  • 键盘事件
  • if(event->modifiers() == Qt::ControlModifier) // 是否按下Ctrl键 if(event->key() == Qt::Key_M) // 是否按下M键 按键的自动重复就是说这个按键在一直被按下,我们需要避免这种情况 我们这里可以捕捉到最后一次按下!
  • 定时器事件与随机数

  • 事件过滤器和事件发送

  • 事件过滤器可以方便的处理多个部件的多个事件,如果不用它的话,还要子类化不同的部件, 重新实现它们对应的各个事件处理函数。 还提供了发送事件的功能。

    总结

    以上是生活随笔为你收集整理的第六章 事件系统的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。