事件(event)
来源:互联网 发布:网络发稿收入 编辑:程序博客网 时间:2024/05/16 01:28
Qt的事件很容易和信号槽混淆。这里简单的说明一下,signal由具体对象发出,然后会马上交给由connect函数连接的slot进行处理;而对于事件,Qt使用一个事件队列对所有发出的事件进行维护,当新的事件产生时,会被追加到事件队列的尾部,前一个事件完成后,取出后面的事件进行处理。但是,必要的时候,Qt的事件也是可以不进入事件队列,而是直接处理的。并且,事件还可以使用“事件过滤器”进行过滤。总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认操作。比如,如果我们要自定义一个QPushButton,那么我们就需要重写它的鼠标点击事件和键盘处理事件,并且在恰当的时候发出clicked()信号。
在main函数里面创建了一个QApplication对象,然后调用了它的exec()函数吗?其实,这个函数就是开始Qt的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt将创建一个事件对象。Qt的所有事件都继承于QEvent类。在事件对象创建完毕后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(event handler)。
在所有组件的父类QWidget中,定义了很多事件处理函数,如keyPressEvent()、keyReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent ()、mousePressEvent()、mouseReleaseEvent()等。这些函数都是protected virtual的,也就是说,我们应该在子类中重定义这些函数
- 事件Event
- event事件
- event事件
- 事件(event)
- 事件(event)
- Event事件
- event 事件
- 事件event
- Event 事件
- 事件(Event)
- 事件Event
- 事件Event
- 事件(event)
- Event事件
- event事件
- 事件EVENT
- event 事件
- 事件Event
- 计算机设计就是处理矛盾的艺术
- Eclipse反编译插件
- DivX和XviD不能不说的故事
- mysql存储引擎的索引对比
- MySQL server has gone away 的解决办法
- 事件(event)
- [感悟]不止技术了
- Javascript中最常用的55个经典技巧
- innodb的索引机制
- SaaS的时代会随着Ipad(平板电脑)到来
- PLC的TCP/IP通讯与Windows系统的比较
- c++中的编译预处理指令
- Linux下GUI开发:GTK+ 2.0 + anjuta + glade
- 声卡无法内录的替代方案