【Qt】使用Visual Studio开发

在Visual Studio 下开发

Visual Studio 2017

使用Visual Studio编译Qt,需在安装qt时,选择MSVS2017编译套件。安装VS时,需要安装C++桌面套件。

安装VS时选择“使用C++的桌面开发”,其他可以不选。
安装完成以后,选择“工具”-扩展和更新-联机 在搜索框中输入“qt”,安装“Qt Visual Studio Tool”即可。如果无法联网安装,则可以去清华大学镜像中下载离线的vsix包,下载好后双击即可安装,注意插件安装过程需要关闭vs,才能安装。
重启VS即可看到目录栏中新增Qt VS Tools,下拉选择Qt Option - Qt Version - Add - 安装 Qt的路径(直到msvs2017_64)。
重启VS即可在新建项目中新建Qt项目。

Visual Studio 2019

  1. 在2019版本下,是在"扩展-管理扩展"下,搜索Qt,安装Qt Visual Studio Tool。
  2. 如果安装过程出现异常,或者联机失败,则可以自己去下载这个扩展。清华大学的镜像提供非常完成的各个开源库镜像,可以有效解决国内访问速度慢的问题。https://mirrors.tuna.tsinghua.edu.cn/,找到Qt-archive-vsaddin,里面有各个版本的vs插件。选择最新的,根据vs的版本号下载对应的插件即可。
  3. QtCreator创建的工程和VS中创建的工程,两者都是可以互相转换的。在插件的Open Qt Project……可以直接打开Qt Creator创建的工程,但是有时提示**“未将对象引用设置到对象的实例”**,则创建失败后,重新从项目文件夹下打开vcxproj尾缀的文件即可。

Qt+VS常用操作

添加功能块

在Qt Creator中是在.pro文件添加功能块,但是在VS中并没有pro文件。需要在项目右击,选择属性,在Qt Project Settings中的Qt Modules中添加相应的功能块。

添加lib库函数

  1. 准备:使用Qt调用lib库函数,一般需要准备*.h*.dll*.lib三个文件。

  2. 给项目工程添加文件:把*.dll*.lib这2个文件,复制到工程的x64下的Debug文件夹下(注意,使用x64编译,需要使用x64生成的*.dll*.lib)。*.h复制到工程源码目录下。
    在这里插入图片描述
    在这里插入图片描述

  3. 配置库路径:点击项目的属性–VC++目录–库目录,添加工程下的x64的Debug路径,因为里面包含了lib文件。在项目属性–链接器–常规–附加库目录,同样添加x64下的Debug路径。
    在这里插入图片描述

  4. 添加依赖项:在项目属性–链接器–输入–附加依赖项,添加对应的*.lib文件。

  5. 配置好了之后,就可以正常编译了。

  6. 最后运行的时候,还是提示没有找到dll文件,需要将dll和lib复制到工程目录下的x64的Debug文件下。

出现的问题及解决

使用VS,打开ui文件不能打开Qt Designer,导致闪退

  1. 在ui文件->选择“打开方式”->选中QtDesigner->点击移除->再点击添加。
  2. 在对话框中选择安装路径下msvc的bin路径下的designer.exe,如D:\QT5.13\5.13.0\msvc2017_64\bin
  3. 最后把新添加的designer设置为默认值,保存即可打开。

输出内容中文乱码问题

参考链接
显示乱码,主要原因是VS默认编码是GB2312,而Qt的编码为UTF-8。需要在vs中弃用GB2312,采用UTF8-BOM编码。
步骤:

  1. vs默认“高级保存选项”是关闭的,所以要先设置选项可见。

  2. VS菜单栏–工具–自定义在这里插入图片描述

  3. 菜单栏选择”文件”–添加命令在这里插入图片描述

  4. 左侧选择文件,右侧找到高级保存选项,点击确定在这里插入图片描述

  5. 设置编码为UTF-8 BOM编码(仅对当前文件生效,故所有包含中文的源文件都应该如此设置一下)文件–高级保存选项–设置编码如下图(如果高级保存选项是灰色不可选中,任意改动一下代码文件就好了)在这里插入图片描述到了这一步,其实项目源代码保存格式已经是UTF-8了,所以直接用QT Creator打开应该是正常显示中文的,但是VS编译结果仍旧会是乱码,因此还要设置一下编译器选项

  6. 设置编译器附加选项(仅对当前项目生效),这种方案可能只有VS 2015及以后版本有效,本人测试环境为Visual Stdio 2019 community版本
    项目右键–属性–C/C++–所有选项–附加选项–写入“/utf-8”–确定在这里插入图片描述
    如果是中文常量的话,Qt5还提供了一个专门的处理宏,但是只能处理常量。

QMessageBox::information(this, QString::fromLocal8Bit("关于"), QStringLiteral("中文显示"));
const char* info = "中文显示";
//不支持
QString strInfo = QStringLiteral(info);
//支持
QString strInfo = QString::fromLocal8Bit(info);

qDebug()中文乱码问题

  1. 确保项目源码为UTF-8编码。
  2. 输出改成qDebug()<<QString::fromUtf8("哈哈")

编辑完ui文件,但是源文件代码不更新的问题

是因为ui文件需要执行编译后,才会生成新的源文件,右击ui文件即可编译。

"常量中有换行符"的问题

Qt Creator的工程用VS打开,编译出现“常量中有换行符”的问题。

在项目-属性-常规-字符集,将字符集设置为多字符集。
在同一目录下的c/c+±命令行-其他选项的末尾添加/utf-8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值