VS导出.pro工程用QTCreator编译xx.ui文件不编译

背景:VS导出.pro工程用QTCreator编译报错为找不到ui_xx.h文件,原因是xx.ui文件没有被mic.exe编译。

先说结论:在导出的.pro文件或.pri添加上一行 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 即可

 

以下是解决过程:

对比刚学的视频教程发现VS工程中,没有Generated Files文件夹。

以下内容引自:https://www.cnblogs.com/ljy339/p/12040151.html

记得在使用低版本的vs时是可以生成Generated Files文件夹的,但在使用vs2019配合最新版本(2.4.2)的Qt VS Tools发现无法生成该文件夹,感觉非常奇怪。在网上一通搜索,找到了这篇Qt VS Tools 2.4版本功能改进的说明,https://www.qt.io/blog/2019/08/19/qt-visual-studio-tools-2-4-rc-released。大概就是说更好的与vs进行了集成,我猜测正是因为这个原因导致无法生成Generated Files文件夹。

可以发现这个不是不存在ui_xx.h文件的原因;网上查询资料,ui_xx.h是编译器从xx.ui文件生成的,VS工程编译是可以自动生成的,但是到了QTCreator却不行了。

转而查询xx.ui不编译的原因,网上得到的资料是qmake会根据内容自动生成makefile文件,在makefile文件里面有调用mic.exe去编译xx.ui的命令行。

查看导出工程的makefile文件,的确没找到mic.exe调用的相关信息;用QTCreator工程新建一个新的UI工程,里面的makefile文件是能找到的。

那怎么能让qmake里面调用mic.exe呢,网上找了一圈,大概都是说只要在.pro文件里面加入 FORM+= xx.ui文件就行了;我看了下导出的.pro文件没有这个,但是对应的.pri文件里面有啊;那把.pri里的FORM+= xx.ui提取到.pro里面去;测试了,还是不行。

这就尴尬了,想了下;发现只是测试工程,东西不多;那不是简单对比下和QTCreator创建的工程就行了;简单分析,其他的文件其实都一样的;就他.pro文件改成一样;诶,发现可以编译通过。

再采用排除法,最后锁定 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 是缺了这个导致的。

简单的工程,VS导出来的,竟然没有把widgets模块加进去,神操作啊!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值