2016 - 2024

感恩一路有你

qt5.6.2 编译器配置 qt信号槽实现原理?

浏览量:4447 时间:2023-04-06 12:42:06 作者:采采

qt信号槽实现原理?

Qt-信号槽的实现原理

信号和槽是在Qt 的元对象系统,它有一个元对象编译器。在编译程序之前,会有一个预处理过程,将类/对象中的信号和槽串值保存在一个容器中,这个容器可以是字符串,也可以是其他有序的容器。

qt和qtcreator有什么区别?都是做什么用的?

向下到编译和链接层,没有区别。它们都是根据参数设置和附加参数调用相应的编译器和连接器,最终完成整个程序的构造。区别在于两个方面:(1)参数分析的过程;(2)依赖关系的维护和更新,也就是所谓的工程组织形式(工程文档)。

经过多次修改,VC现在使用vcxproj文件来组织项目。在VS中按F5后,过程大概是这样的。我们用msbuild分析vcxproj,获取构建参数,求解依赖关系,启动编译器对源文件进行编译,最后调用链接器链接输出。当然中间还有很多其他过程,所以我赢了 这里不赘述。

QtCreator比较特别。一般来说,它使用pro和pri文件来组织项目,但它没有内置的构建工具。而是通过Qt工具链中的qmake工具解析pro和pri文件,生成其他构建系统可以识别的组织文件,包括make和nmake,然后调用相应的构建工具完成构建。至于这些建筑系统是如何工作的,去查相关资料和文件就可以了。

再多说两句,在构建Qt程序的时候,可能还需要几个额外的过程。一个是moc生成对象元数据,一个是uic把ui接口转换成C代码,一个是rcc把Qt资源定义文件qrc转换成数据代码。默认情况下,VS不会为您添加和维护这些进程,所以VS s Qt插件就派上用场了,可以自动帮你设置这些流程。还有,当VS构建Qt项目时,插件不会参与其中。也就是说,在安装了Qt插件的VS中组织的项目,在没有插件的VS中也可以成功构建。

当然,如果你所有的依赖关系都在pro文件中描述清楚了,那么用qmake生成vcxproj,然后启动vs来构建项目是完全可以接受的。

最后,Qt4的VS插件不再更新,VS的AddinAPI也面临退役的风险。在这里,我还是安利下我的fork的Qt4插件,修复了一些bug,增加了几个新功能,包括配置对话框弹性,x86和x64平台使用不同Qt版本,不同VS使用不同Qt版本,支持2012和2013,最近打算在2015年增加支持。

地址是:JackyDing/Qt4VSA。ddin GitHub

VS 文件 过程 Qt 项目

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。