QT4.8.6工程到QT5.12.1的迁移

时间:2024-05-18 16:01:06

2016年的一份代码是用VS QT4.8.6编写的,最近需要借鉴下,电脑上当前版本是QT 5.12.1,花了点时间做了下两者的转换,过程记录如下:

vs2017上已经拓展了QT VS Tools工具,当时的代码由vs2008编辑,打开项目出现

QT4.8.6工程到QT5.12.1的迁移

选中Qt VS Tools上的Convert custom build steps to Qt/MSBuild选项

QT4.8.6工程到QT5.12.1的迁移

直接编译会报一系列错误,需要配置下

QT4.8.6工程到QT5.12.1的迁移

当时的QT是win32版本,转换完毕后做如下修改:

项目配置属性中的windows SDK版本设置下,选择第2个10.0.18362.0

QT4.8.6工程到QT5.12.1的迁移

Qt Installation配置下

QT4.8.6工程到QT5.12.1的迁移

 

QT4.8.6工程到QT5.12.1的迁移

QT4.8.6工程到QT5.12.1的迁移

附加目录库添加如下:

QT4.8.6工程到QT5.12.1的迁移

附加依赖项添加如下:

QT4.8.6工程到QT5.12.1的迁移

代码部分的改动如下:

1. 需要把

#include <QtGui/QWidget>

替换为

#include <QWidget>

诸如类似的包含文件都需要做相应改动

2. 报错误    C2039    “WFlags”: 不是“Qt”的成员 (编译源文件 myui.cpp)   时,需要把WFlages替换为WindowFlags

3. 之前代码里有 QTextCodec::setCodecForTr(QTextCodec::codecForLocale());语句可以注释掉, QT5不再支持了

4. 报错误C2039    “setResizeMode”: 不是“QHeaderView”的成员  ,需要把setResizeMode换为setSectionResizeMode

5.报错误    C2678    二进制“==”: 没有找到接受“std::_Binder<std::_Unforced,SOCKET &,sockaddr *,unsigned int>”类型的左操作数的运算符(或没有可接受的转换)   ,需要在bind前面加上双引号,改为如下:

QT4.8.6工程到QT5.12.1的迁移

做完如下修改后,编译成功。

见到了16年自己的写的GUI,好熟悉的感觉。

相关文章