VS2017+Qt5.13.2环境配置

QT安装

Qt版本
Visual Studio Add-in下载地址

1.qt-opensource 与 Visual Studio Add-in 的安装顺序没什么要求

2.Qt选择安装的组件

组件选择

组件选择

3.安装完成 Visual Studio Add-in 之后,Visual Studio 就会出现相应的 Qt 选项!
Qt选项

4.配置开发环境
选择:QT VS Tool -> Qt Options -> Add,配置 Qt 的开发环境。

这里根据 Qt 安装路径进行选择,Path 为:D:\Qt\Qt5.13.2\5.13.2\msvc2017_64。
在这里插入图片描述
在这里插入图片描述

用VS2017新建Qt项目

导入 Qt 项目

选择:QtVSTool -> Open Qt Project File(.pro)…

新建 Qt 项目

1、选择:文件 -> 新建 -> 项目 -> Qt -> Qt Widget Application,输入工程名,下一步…进行新建。
在这里插入图片描述

2、选择依赖的模块:最基础的 QtCore、QtGui、QtWidgets 还有一些音/视频、网络、数据库、XML、OpenGl 相关的模块,需要使用的直接勾选即可。
在这里插入图片描述

3.修改Base class选择QWidget,然后点击Finish
在这里插入图片描述

环境配置

1.添加包含头文件目录:

工程右键属性->C/C++>常规->附加包含目录
添加D:\Qt\Qt5.13.2\5.13.2\mingw73_32\include

2.添加.lib文件

方法一:
①工程右键属性->链接器->常规->附加库目录
添加D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\lib目录路径

②工程右键属性->链接器->输入->附加依赖项
添加Qt5Widgets.lib
添加.lib文件

方法二:
库文件比较多时:
①在项目上点击右键->添加->新建筛选器,命名为Lib Files
②在Lib Files上点击右键->添加->现有项,把D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\lib下的所有库文件(*.lib)加入到项目中来即可。

注意:不要把release模式的lib文件也添加进去了(Debug模式lib文件的文件名末尾通常会带d),否则编译会报错:
Qt5AxServer.lib(qaxservermain.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(HelloWorld_VS.obj 中)
在这里插入图片描述

3.xxx.ui文件生成头文件ui_xxx.h

报错找不到ui_HelloWorld_VS.h的问题,在VS环境下创建的Qt工程中HelloWorld_VS.ui文件没生成头文件。
在这里插入图片描述

解决方法:

方法一:
选中.ui文件右键,点击编译,生成ui_XXX.h头文件
在这里插入图片描述
我创建的工程右键编译选项是灰的,操作如下:
①右键单击ui文件,选择 属性->配置属性->常规->项类型,修改为“自定义生成工具”
在这里插入图片描述
③点击"应用"按钮后展开自定义生成工具,具体设置:
命令行:"KaTeX parse error: Undefined control sequence: \bin at position 8: (QTDIR)\̲b̲i̲n̲\uic.exe" -o ".…(QTDIR)\bin\uic.exe;%(AdditionalInputs)

$(QTDIR)在环境变量设置为:D:\Qt\Qt5.13.2\5.13.2\msvc2017_64
在这里插入图片描述

在这里插入图片描述

④右键ui_xxx.h文件,编译已经变亮了,编译成功后,会生成GeneratedFiles目录,下面生成了ui_HelloWorld_VS.h。将GeneratedFiles目录添加到工程下即可。
在这里插入图片描述
生成ui_xxx.h文件

方法二:手动生成
①找到Qt安装目录下uic.exe的路径,D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin
②Win+R调出命令行,先切换到uic.exe所在路径
在这里插入图片描述
③.生成ui_xxx.h文件
uic HelloWorld_VS.ui ui_HelloWorld_VS.h
D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin>uic
D:\Code\Qt_Code\HelloWorld_VS\HelloWorld_VS\HelloWorld_VS.ui D:\Code\Qt_Code\HelloWorld_VS\HelloWorld_VS\ui_HelloWorld_VS.h

4.生成moc文件

缺少moc文件的话会报错:
①HelloWorld_VS.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl HelloWorld_VS::metaObject(void)const " (?metaObject@HelloWorld_VS@@UEBAPEBUQMetaObject@@XZ)
②HelloWorld_VS.obj : error LNK2001: 无法解析的外部符号 “public: virtual void * __cdecl HelloWorld_VS::qt_metacast(char const *)” (?qt_metacast@HelloWorld_VS@@UEAAPEAXPEBD@Z)
③HelloWorld_VS.obj : error LNK2001: 无法解析的外部符号 “public: virtual int __cdecl HelloWorld_VS::qt_metacall(enum QMetaObject::Call,int,void * *)” (?qt_metacall@HelloWorld_VS@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)

在这里插入图片描述问题原因:
当在VS工程中编写QT和C++程序时,要想不同模块之间通过QT的信号(SIGNALS)和槽(SLOT)的机制进行通信,就需要继承于QOBJECT基类,继承于QOBJECT基类的类(文件),会相应的生成一个moc文件,若没有生成moc文件,则不能使用信号和槽。
Qt程序交由标准编译器编译之前,先要使用moc分析C++源文件。如果它发现在一个头文件中包含了宏Q_OBJECT,则会生成另一个C++源文件。这个源文件中包含了Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。

解决方法:
找到Q_OBJECT宏在哪个文件中用到了
在这里插入图片描述
我这边是在HelloWorld_VS.h中用到了,需要生成对应的moc_HelloWorld_VS.cpp文件。

生成方法一:
①HelloWorld_VS.h文件右键选择 属性->配置属性->常规->项类型,②修改为“自定义生成工具”
展开自定义生成工具,具体设置:
命令行:“D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin\moc.exe” -o “.\GeneratedFiles\moc_%(Filename).cpp” “%(FullPath)”
说明:Moc%27ing %(Identity)…
输出:.\GeneratedFiles\moc_%(Filename).cpp;%(Outputs)
附加依赖项:D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin\moc.exe;%(AdditionalInputs)
在这里插入图片描述
③HelloWorld_VS.h文件右键选择编译,会在GeneratedFiles下生成moc_HelloWorld_VS.cpp文件,需要添加到工程中。
在这里插入图片描述

生成方法二:手动生成
①找到Qt安装目录下moc.exe的路径:D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin
②Win+R调出命令行,先切换到moc.exe所在路径
③切换到HelloWorld_VS.h文件所在路径
④moc HelloWorld_VS.h -o moc_HelloWorld_VS.cpp

5.一个报错处理

报错:
Qt5AxServerd.lib(qaxserver.obj) : error LNK2019: 无法解析的外部符号 “class QAxFactory * __cdecl qax_instantiate(void)” (?qax_instantiate@@YAPEAVQAxFactory@@XZ),该符号在函数 “class QAxFactory * __cdecl qAxFactory(void)” (?qAxFactory@@YAPEAVQAxFactory@@XZ) 中被引用

解决方法:
添加lib时把Qt5AxServerd.lib也加进去了,在Lib Files中移除即可。

6.配置环境变量

在这里插入图片描述
问题原因:没有相应的动态库文件

解决方法:

(1)右键计算机 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量,添加环境变量(推荐)
①设置用户变量
QTDIR:D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin
PATH:%QTDIR%\bin
在这里插入图片描述
或者
②设置系统变量
将库的路径D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin\添加到环境变量中,以英文状态下的分号 与其他内容分割。
在这里插入图片描述
修改后重启VS即可。

(2)在 Qt 的安装目录(D:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin)下找到缺少的 *.dll,将其与可执行程序放到同一目录下(不推荐)。
在这里插入图片描述

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值