qtcreator配置msvc编译器 visual studio配置qt开发 以及使用对比

2024-03-31 06:44

本文主要是介绍qtcreator配置msvc编译器 visual studio配置qt开发 以及使用对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

qtcreator配置msvc编译器开发

  • qtcreator在线安装(qt5.12之后)时候,默认选择的是mingw(gcc编译器的windows版本)的qt库以及migw编译器,我们可以额外勾选msvc(visual studio的编译器,微软自家的编译器,且专用于windows平台)版qt库。注意,就默认安装在c盘即可。
  • 而msvc编译器是没得选的,只能自己安装,这里我们可以直接安装一个visual studio 2019或者2022(最新的)软件(刚好后面也会用到这个软件的),其中勾选 c++开发工具,扩展开发工具两项,安装即可。此时就会连带安装好msvc编译器了。注意,就默认安装在c盘即可。
  • qtcreator菜单栏,便捷-》preference-》构建套件,自己增加一个套件,其中编译器c和c++那里,选择”管理,然后 re-detect,让它自己搜索一下,会发现有MSVC的编译器出现了,但是可以发现,c和c++的编译器都是一样的,而mingw编译器是区分的。
  • 调试器,旋转cdb.exe即可,qt版本旋转 qt msvcxx xxbit的。编译器和qt库都选amd64位的即可。
  • 然后新建项目时,选择刚刚定制的那个构建套件即可。
  • 注意,msvc默认是用gbk编码来编译源文件的,而qtcreator默认都是utf8编码,因此我们如果有中文注释或者字符串,会编译报错的,这里我们需要在.pro文件里加入如下代码即可:

    #解决msvc编译器强制utf进行编译,因为默认是gbk进行编译的,从而中文会乱码或者编译报错
    msvc{
        QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
    }
     
  • 就可以编译运行和调试了。

我们可以发现,msvc编译器的编译和调试的速度特别快,特别是调试,显著的比mingw版qt和mingw编译器快的,调试功能更强大一些,其它的倒是没有什么区别。

visual studio配置qt开发

  • 下载最新版vs2022(我当前的版本)或者vs2019,安装时候选c++开发,c++扩展开发两个模块
  • 安装好后,在菜单栏”扩展“-》”管理扩展“,搜索qt visual studio tools插件,直接安装即可(我的是3.0.2版本),或者直接去qt官网下:Qt Visual Studio Tools - Visual Studio Marketplace
  • 然后,菜单栏”扩展“-》”qt vs tools“ -》 ’qt versions”中,点击+号,浏览到前面安装的qt库的qmake.exe位置,确定即可
  • 此时在general页面,将preferred source 改为offline,即光标所在qt函数,按下f1可以打开离线的文档,而不是在线文档,这样没网的时候也可以用了。qt designer的run in detached window设为true,这样打开ui设计界面才不会闪退。
  • 菜单栏,文件,新建 qt工程,widget工程,编译运行即可。

visual studio打开qtcreator的.pro工程

还是 菜单栏”扩展“-》”qt vs tools“ -》 ’open qt project file(.pro)”,这里直接打开qtcreator中建立的工程的.pro文件即可。注意:visual studio建立的工程,好像不能生成.pro文件,也就是说qtcreator无法打开visual studio创建的qt工程,当然,可能也没这个必要,见后面分析。

开发qt程序,qtcreator 和 visual studio使用对比

先说我的看法结论:

qtcreator建立qt项目进行代码开发,采用msvc的qt版本以及msvc编译器棘手的问题用visual studio打开该项目进行debug调试

原因:

qtcreator更适合写代码:

qtcreator是qt官方自己的IDE,界面上的各种功能都是针对qt开发的实用功能,界面简洁实用。

而visual studio是针对所有windows平台上应用做开发的一个强大IDE,功能繁多,而qt的开发仅仅是一个插件的形式进行支持,导致针对性功能较少,而无关功能大量存在,使得操作繁琐。

这里举个几个常见的例子:

qtcreator将UI设计的Qt designer融为一体了,拖拽的控件右键可以直接“转到槽”,这个提高了代码编写效率。

光标按下F1按键,qtcreator跳转的对应文档,是在软件内即可进行浏览,而visual studio是在浏览器中进行外部浏览,很明显,qtcreator集成度更友好的。此外,控制台输出什么的,qtcreator支持得也更加好的,vs只能在弹出的一个控制台里输出,很鸡肋!

另外,qtcreator界面比较简洁,项目视图简洁清晰,更容易操作和阅读。

关于代码提示,跳转,查找引用,重构改名,编辑体验 友好性等方面,qtcreator做得很好用的了,不输visua studio的。而且有一点,我觉得qtcreator编辑器的配色比visual studio好看!

msvc编译器更高效

假如我们的qt软件仅仅运行在windows平台,那么用msvc编译器就可以了,而mingw是可以跨平台的。

msvc是微软自家的编译器,编译速度,优化,调试方面,更加强大,此外很多第三方库都是windows平台,都是msvc编译器编出来的,因此可以直接链接使用。

visual studio调试棘手问题更强大

尤其是调试功能cdb.exe,调试功能明显更强大的,能解决很多棘手的问题,例如软件闪退,进行内存dump定位等。从上面说的,刚好visual studio可以打开.pro项目的(那么vs能不能建立.pro工程呢?好像低版本的qt插件是可以的,反正我的是不行)。

这篇关于qtcreator配置msvc编译器 visual studio配置qt开发 以及使用对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/863675

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

flask库中sessions.py的使用小结

《flask库中sessions.py的使用小结》在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,... 目录1. Flask Session 的基本使用(1) 启用 Session(2) 存储和读取 Se