Qt creator代码移植到VS2017+Qt方式,报错,问题汇总(MinGW和MSVC编译器)

Qt creator相比于VS简单易用更轻量,特别是敲qt代码时,补全提醒以及可视化等做的都非常好。而且Qt支持多平台,拥有VS没有的优势,如果项目不大,个人推荐使用Qt作为你的编辑器。
博主之前一直使用Qt creator作为自己的编辑器,但是当前的项目需要一些特殊的第三方库,目前只找到联合VS使用的帖子,使用Qt做依赖的话十分麻烦,也没有什么相关的资料可以参考。所以只能使用VS2017+Qt的方式进行,当我将代码从Qt creator移植到VS中时,出现很多问题,在此总结一下。
Qt creator代码移植到VS2017+Qt方式,报错,问题汇总(MinGW和MSVC编译器)_第1张图片
目前经过我的尝试发现,出现这些问题的原因主要是更换了编译器。之前安装Qt使用的是MinGW_64,移植到MSVC2017_64就会遇到这些问题。

移植Qt creator代码至VS+Qt

首先说明一下移植Qt creator的工程至VS的方法:
利用vsaddin插件,如何安装该插件网上有很多教程。安装后可以在VS内直接加载Qt creator的工程。
Qt creator代码移植到VS2017+Qt方式,报错,问题汇总(MinGW和MSVC编译器)_第2张图片

问题汇总及解决方法

移植成功后编译运行,就会发现出现各种报错,接下来就列举出问题及解决方法。

  1. 关于界面文件.ui构建的头文件的include位置

在QT creator中,界面文件构建的头文件,在相应的.cpp中包含(#include “ui_xxxx.h”)。而VS则是在xxxx.h文件中(#include “ui_xxxx.h”)。所以有时候在QT creator的xxxx.h文件中使用一些类的时候,需要注意一下是否已经将该类所在的头文件include进来了。(这个是两者的不同,不过Qt creator的编码形式放到VS中也可以使用,但要注意不要二者混合使用)

  1. 成员变量中Ui的声明不同

Qt creator和VS在头文件的class中的成员变量ui,默认的声明方式不同。Qt creator中默认为Ui::CameraDialog *ui,VS中默认为Ui::CameraDialog ui两者都可用,但注意最好统一使用一种。若声明为指针注意要进行释放,不过默认代码中有相应的delete,只要不把两种声明方式混合使用一般没有什么问题。

  1. 使用VS编译运行代码后,发现原来正常的界面出现了很多乱码,特别是有中文的部分。

解决方法:

  • 中文的部分每处都进行强转,即把中文QString::fromLocal8Bit()括起来。
  • 在使用中文的头文件前加下面的宏,一劳永逸:
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
  1. 如果代码本身在MinGW编译器下编译运行没有任何问题,而移植到MSVC中出现以下报错时:“常亮中存在换行符 ”,“在xxx后面少)”等。

这种情况一般都是中文内容编译导致的,可以先采用第 3 种方法进行处理。如果仍然出现报错可以新建个记事本文件.txt,将各个源文件的代码复制到.txt文件中,另存为编码格式为带有BOM的UTF-8文件。最后重新在VS中新建相应的文件,将代码复制回去即可。

目前遇到的问题就这么多,我的代码也还在移植过程中,后续遇到的问题会继续更新在这篇文章下面。

你可能感兴趣的:(软件报错)