怎样查网站有没有做CDN加速,台州网红桥,郑州正规的网站制作价钱,个人网页制作实验报告一、事件前言事件是QT的三大机制之一#xff0c;一定程度上信号和槽也属于事件的一种
QT中的事件指哪些#xff1a;窗口关闭#xff0c;窗口显示#xff0c;敲击键盘#xff0c;点击鼠标左键、鼠标右键、鼠标滚轮#xff0c;文件拖放等等1、事件循环QT中的所有事件#…一、事件前言
事件是QT的三大机制之一一定程度上信号和槽也属于事件的一种
QT中的事件指哪些窗口关闭窗口显示敲击键盘点击鼠标左键、鼠标右键、鼠标滚轮文件拖放等等
1、事件循环
QT中的所有事件都是放在 事件循环 中被反复执行的本质上不是一次性的操作而是这些事件这些函数被反复触发反复执行那么就会出现在事件循环中被反复执行。
2、事件的本质
在QT中所有的事件本质上都是受保护的虚函数发生了对应的事件就会调用对应的受保护的函数。
所有事件函数中都有一个事件对象用来维护并记录事件发生的过程中所产生的数据我们可以通过这个对象获取事件过程中所产生的数据void 事件(事件对象 ev){我们可以通过 事件对象 ev 来获取事件中的数据
}3、关闭事件和隐藏事件1关闭事件
事件函数virtual void closeEvent(QCloseEvent* ev);
事件对象QCloseEvent* ev :关闭事件中基本不产生数据所以没啥用
发生条件1.点击窗口的关闭键2.手动调用函数close();关闭窗口
关闭事件的特点1.在关闭事件中会先关闭窗口再调用析构函数2.只有将所有的窗口都隐藏或关闭时并且最后一个事件时关闭事件时才会调用析构函数并且是调用所有关闭和隐藏了的窗口的析构函数3.关闭事件是通过隐藏事件实现的2隐藏事件
事件函数virtual void hideEvent(QHideEvent* ev);
事件对象隐藏事件不产生数据不需要调用
触发条件1.点击窗口的隐藏键2.手动调用函数hide();隐藏窗口
隐藏事件的特点1.隐藏事件不会调用析构函数2.如果操作的最后一个窗口触发的事件是隐藏事件则不论前面有没有关闭事件都不会调用析构函数3关闭事件和隐藏事件的区别无论是关闭事件还是隐藏事件现象都是将窗口给隐藏
区别在于隐藏事件无论如何都不会调用析构函数关闭事件会有条件的调用析构函数4、键盘事件1键盘事件的槽函数
事件函数virtual void keyPressEvent(QKeyEvent* ev); //按下事件virtual void keyReleaseEvent(QKeyEvent* ev); //释放事件
事件对象获取键盘上按下的按键的值以及功能
触发条件按下、释放键盘上的按键2如何获取键盘按下的按键值
QString QKeyEvent::text() const
功能以字符串类型返回键盘敲击的值3如何获取键盘按下的所有按键包括功能按键
int QKeyEvent::key() const
功能可以获取键盘上按下的每一个按键包括功能按键
返回值是一个枚举每个枚举值代表按下的不同按键4如何获取键盘按下的组合键
Qt::KeyboardModifiers modifiers() const
功能返回按下的组合键如果按下的不是组合键就返回noModifier5键盘事件的重复触发机制键盘的重复触发机制是指如果按键按住不抬起释放就会重复触发键盘的 按下 - 抬起 事件直到按键真正被释放。在键盘事件中有一个函数可以检测按键是否正在被按下就是isAutoRepeat()
函数原型bool QKeyEvent::isAutoRepeat() const
功能检查是否有按键正在被按下如果有就返回True如果没有就返回False5、事件过滤器QT当中事件的流转过程如下
1. 发生物理事件
2. 发生事件的窗口捕获该事件
3. 将该事件交给事件过滤器经过各种过滤以后
4. 派发给目标窗口当前鼠标焦点在哪个窗口就会派发事件给哪个窗口如果所有窗口都不具备焦点则派发个事件发生的窗口
5. 接收到事件的窗口调用对应的事件函数。
1label文本框label对象不会被事件过滤器派发事件2将ui界面中某个窗口的类型修改成我们自己写的类型3手动将事件派发个目标窗口46、鼠标事件1鼠标左键事件2鼠标右键事件1向右键菜单栏中添加选项7、拖放事件1拖放事件的触发2拖入事件的代码3释放事件的触发4释放事件的代码