区别是:事件对应的是信号产生的途径,例如按钮的按下松开。信号需要关注的是产生其的对象,例如按钮,槽函数需要找到信号对象,不会关心如何产生这个信号。事件更底层,它是封装windows消息形成的,信号更偏上层一点。
以window为例,Qt事件就是将windows底层的消息例如WM_KEYDOWN经过两三次转换为Qt::Key_Down的事件,按下键盘的Down会触发这个事件。
想了解信号与事件,较好看Qt的源码,以QPushButton为例,按下这个按钮是先触发的是mousePressEvent事件,在事件源码中会发射pressed()信号,松开按钮又触发mouseReleaseEvent事件,在事件源码中发射released()信号和clicked()信号。
事件对应的是信号产生的途径,例如按钮的按下松开。信号需要关注的是产生其的对象,例如按钮,槽函数需要找到信号对象,不会关心如何产生这个信号。
事件更底层,它是封装windows消息形成的,信号更偏上层一点。
想详细了解事件就得熟悉整个事件循环,只想了解二者的区别,看看事件的源码就行了,例如QAbstractButton::mousePressEvent
延伸阅读:
什么是qt?
Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。
2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。
2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。
文章标题:qt中的事件和信号有什么具体区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38871