VS 2017工程转Qt Creator工程

对于使用VS+Qt开发方式的小伙伴,如果需要跨平台开发,即转换成Qt Creator工程文件*.pro,拷贝代码到linux上编译,

则一定会遇到VS工程转Qt Creator工程的问题。

这里使用的是VS2017+qt-opensource-windows-x86-5.13.0.exe

1、从VS中导出Qt Creator工程

(1)我们先建立一个测试工程,然后在工程名称上右键,选择“Qt”->“Create Basic .pro File...”。

(2)一般默认,选择“OK”

(3)默认保存pri、pro文件到源码所在目录,选择“保存”

保存到了这里。

(4)转换工程,选择“Convert Project to QMake Generated Project”,貌似并没有新生成什么?先照做吧。

2、使用Qt Creator编译工程

使用Qt Creator打开*.pro工程,并构建。

(1)ui_xxx.h路径不一致导致编译报错(坑1)

报错如下:

这转换不够智能啊,这么简单的demo,直接编译报错,要是更复杂,那工程转换也是一个费神的事儿。

研究了下,发现Qt Creator编译生成的ui_xxx.h与VS编译生成的ui_xxx.h路径不一样。Qt Creator和VS会各自到自己路径下去找ui_xxx.h。

而ui_xxx.h是由编译xxx.ui文件得到的中间文件,会在xxx.cpp中被包含,参与编译。所以你要转换工程,

就只能将VS生成的ui_xxx.h拷贝到转换后的Creator路径下,Creator工程才能编译过。

如果xxx.ui文件发生修改,VS生成了新的ui_xxx.h,由于路径与Creator路径不一致,所以覆盖不到旧版,Creator工程下依然使用的旧版本参与编译。

除非可以设置2者路径为一致,否则ui文件一修改就需要拷贝。。。

a.Creator工程ui_xxx.h路径

这是Creator工程目录,repos\untitled

这是编译mainwindow.ui生成ui_mainwindow.h所在目录repos\build-untitled-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug

b.VS工程ui_xxx.h路径

这是VS新建工程目录repos\QtGuiApplication1\QtGuiApplication1

这是编译ui得到的ui_QtGuiApplication1.h文件目录repos\QtGuiApplication1\QtGuiApplication1\x64\Debug\uic

解决办法:

将VS生成ui_QtGuiApplication1.h文件拷贝到repos\QtGuiApplication1\QtGuiApplication1

然后Creator构建,不报找不到头文件错误了。

(2)VS生成pro文件不完善,导致链接错误(坑2)

再次编译,报错如下:

再次研究,是链接库错误;

解决办法:pro中需要添加widgets模块,添加一行:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

再次编译,成功。

3、关于作者的一点看法

如果你开发的程序只管windows上跑,也不关心是否需要使用Qt Creator打开,那么推荐你使用VS+Qt方式进行开发,VS毕竟速度和调试功能完爆

Qt Creator。

如果你需要考虑跨平台,那么最好不要使用VS+Qt这种方式,工程转换路径、库、配置有很多麻烦的地方。

推荐使用Qt Creator编码+MSVC编译的方式,为什么不推荐使用MinGW编译,因为MSVC在编译速度和运行速度上都完爆MinGW。

你自己分别使用MSVC和MinGW编译和运行程序试一下就知道了。

另外这种方式不存在工程转换的问题,可以更好的支持跨平台开发。

 


若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

  • 12
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值