Qt MSVC开发

环境搭建

  1. 安装Virsual Studio,版本可以选择最新版本,我安装的时vs2022,安装时需要勾选 C++ 桌面开发

  1. 安装QT, 下载地址:https://download.qt.io/official_releases/online_installers/,安装时需要选择MSVC 2019 64-bit。

安装完后会有,Qt Creator 、Qt Maintenance Tool 等等工具。其中 Qt Maintenance Tool 用来添加或删除Qt组件,所以没有的用到的组件暂时不用安装,后续用到时再安装。

  1. 环境变量配置,将Qt msvc 组件的Bin目录(C:\Qt\6.4.1\msvc2019_64\bin)添加到Path环境变量中。因为Qt编译时需要用到该目录下的moc.exe,rcc.exe(资源编译),uic.exe(UI编译)等等。

  1. Clion配置,在Clion中添加visual studio工具链,如果更方便使用UI设计工具等,可以配置一下外部工具,不配置也没有关系,外部工具配置参考:https://zhuanlan.zhihu.com/p/519409942。忽略参考里面的工具链的配置。

环境变量的作用

  1. Qt是使用CMake进行编译的,CMake编译时需要调用moc.exe,rcc.exe,uic.exe编译一些QT宏,资源,UI等。这些可以通过Path环境变量查找到。

  1. 帮助find_package(Qt6 REQUIRED COMPONENTS Widgets)查找Qt CMake组件。如果不配置环境变量就需要在CMake中添加set(CMAKE_PREFIX_PATH "C:/Qt/6.4.1/msvc2019_64")。CMake在查找组件时可以自动去掉Path变量目录中的bin目录进行查找,所以设置环境变量后就无需设置CMAKE_PREFIX_PATH变量。

控制台输出

开发时需要使用qDebug、std::cout等向控制台用于输出调试信息。Qt Creator创建的窗口程序默认情况下,在Qt Creator在非调试时可以正常显示,但调试的时候不正常。如在CLion中无论时运行和调试都显示不正常。

原因与解决方法

std::cout输出

默认情况下创建的是Qt窗口程序创建的是一个win32程序。

你可能会觉得奇怪,win32程序的主函数是winMain,但Qt写的主函数是main。这最主要是Qt封装了主函数winMain,让所有程序的主函数都是main。这个可以通过调试堆栈看到。

win32程序默认情况下是不创建控制台窗口的,所以没法显示std::cout输出。我们也可以通过代码手动创建一个控制台窗口,但这个没法直接输出到CLion的控制台窗口。最好的方法是修改CMake改变程序类型,直接创建一个控制台程序。可以通过修改WIN32_EXECUTABLE为FALSE 将程序改为控制台程序,修改的时候可以通过是Debug还是Release来判断是否修改。

Qt修改默认输出流的缓存,导致需要手动 flush才能立即显示当前消息,所以没有消息最后输出完最好加上std::endl。

QDebug输出

默认情况下QDebug输出使用的函数是OutputDebugString函数,这个函数会在visual studio中一个Debug窗口中输出一条消息,但CLion中没有这个窗口。如果想要将QDebug输出到控制台,可以通过添加一个环境变量QT_FORCE_STDERR_LOGGING,并将值为1。也可以通过以下代码为当前运行程序添加环境变量来控制输出,这个需要第一次调用qDebug函数前设置:

qputenv("QT_FORCE_STDERR_LOGGING", QByteArray{"1"});

控制台乱码

Qt的QString使用的是UTF-16编码,所以程序最好使用UTF-8编码,这样可以更好的避免乱码的出现。具体如何使用UTF-8编码请参考:https://blog.csdn.net/wlk1229/article/details/128363989?spm=1001.2014.3001.5501

调试Qt源码

  1. 下载源码,打开Qt Maintenance Tool,在对应版本中选择Sources和Qt Debug Information Files。如果没有对应的组件,在右侧选择四个筛选项,并点击筛选按钮。

在Qt安装目录对应的版本目录下会有源码。其在bin目录下所有DLL会有对应的 *.pdb调试符号文件。

  1. 在Qt Creator中设置源码映射,[Edit->preference...->Debugger->Add Qt sources...]选择源码目录。

CLion中调试源码

CLion中没有源码映射(也许是我没找到设置方法),不能通过上面的方法调试源码。

要使用CLion调试代码首先确定Qt Creator中哪个映射目录起作用,可以通过删除Qt Creator中源码映射项来确定。确定之后可以创建一个Source path目录,把Qt代码拷贝到对应的Source path目录。

我测试的源码映射目录是"C:\Users\qt\work\qt",并把源码拷贝到了对应目录,后面CLion就可以调试Qt源码了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值