【Qt】使用visual studio 2022 配置独立的Qt 5.15 开发环境

为什么要写这篇文章

我大二大三写作业的时候,要用Qt做UI,整个包体装下来有五六个G,这对于512GB的手提电脑来说有点臃肿;别人看我的项目、或者我回头看旧项目时,编译运行也要依赖Qt;Qt的debug功能做得不如VS好,程序运行突然崩溃我都不知道崩在哪行。总之就是,使用Qt Creator开发真麻烦。

直到我去实习,发现Qt项目可以直接用visual studio开发,用cmake移植,更高效、轻便、通用。于是想把这个方法分享给要交作业的在校大学生,或者需要简单搭个qt环境写demo的朋友们。

本文适合:

有Qt基础开发经验的入门者,想要一个更优雅的开发环境。

本文不适合:

Qt初学者,语法和常用控件都不太熟悉的那种,或者是最近需要找开源代码参考学习的同学,就不要跟我做这么骚的操作了。还是老老实实下载Qt Creator吧。

环境配置

1. 安装VS2022

安装visual studio 2022,勾选“使用c++的桌面开发”。

2. 下载Qt 5.15

  • 官方,下载目录:https://download.qt.io/archive/qt/

    我不太喜欢官方,因为我看不懂这么复杂的目录。

  • 清华镜像,在线安装器:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/

    在线安装要求注册并登陆Qt账号。一路next。自定义安装路径。组件我只选了MSVC 2019 64-bit,其它都不勾。因为我只想做个作业或者试个demo而已,msvc源自微软亲妈安心可靠,mingw源自Linux用于移植。版本我选了5.15.2,听说6版很折腾,华而不实。一路next不用改,安装。预计下载1.18G。下载挺慢的。
    在这里插入图片描述

3. 部署

3.1. 安装VS拓展工具

方法一:

去官网下载拓展管理器vsaddin,双击安装。安装的时候要关闭vs2022。

https://download.qt.io/official_releases/vsaddin/2.9.1/

方法二:

打开vs2022,点击右下方”继续但无需代码→"

看顶部菜单栏,选择“拓展”,“管理拓展”
在这里插入图片描述
搜索”Qt Visual Studio Tools“,安装。(我不知道为什么,我那儿搜不到这个拓展工具)

3.2. 配置qt版本

插件不会自动识别已有的qt版本,需要我们手动设置。打开vs2022,点击”Select Qt version“;或者拓展 > Qt VS Tools > Qt Versions
在这里插入图片描述
在这里插入图片描述
添加msvc的bin文件夹路径,例如我的是 D:\Softwares\Qt\5.15.2\msvc2019_64\bin ,你会发现里面有个qmake.exe文件,选它就没错了。

在这里插入图片描述

3.3. 测试运行

关闭vs,再次打开,新建项目,你会发现模板列表里多了Qt。

在这里插入图片描述
选择widget application,创建,一路next next next 啥也不要改 然后 finish。运行。能跑起来就说明成功了。这一步的目的只是跑个测试,后续正式开工会另外建项目。

在这里插入图片描述

白手起家 建项目

1. 不要.ui文件

不要用qt widget application模板,因为它自带.ui文件,我不想依赖其它工具;据说改了.ui文件之后要重新生成,麻烦。

选择qt console application模板,next,finish。白手起家一点点搭。

初始的模板只有一个main.cpp,非常简短。运行之后是一个控制台黑窗。

在这里插入图片描述

2. 管理文件结构

默认生成的文件目录是这样的:
在这里插入图片描述
默认生成的解决方案是这样的:
在这里插入图片描述
模板的文件管理比较简单,仅仅是让.h和.cpp文件分开两个文件夹而已。但在实际应用中,我们需要创建多个文件夹。qt常用架构为mvc模式。此处留一个文件管理参考:

Project/
	.git/
	src/
		model/
			TreeModel.cpp
			TreeModel.h
		view/
			style/
				.qss
			icon/
				.png
			part1/
			part2/
			part3/
				TreeView.cpp
				TreeView.h
			MainWindow.cpp
			MainWindow.h
		main.cpp
		Project.qrc
	Project.sln

3. 管理模块

可以看到main.cpp的头文件有点奇怪。如果你有在qt creator里建过项目,会发现qt creator给的模板的main文件的头文件是#include <QCoreApplication>,而vs给出的模板是#include <QtCore/QCoreApplication>。后者多了一个文件夹路径。

没关系,咱直接把这个路径删了就行。😃 照样能运行

先把将来大概率需要用到的模块加上:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 跑起来一个窗口

新建mymainwindow.h

Qt命名规范参考官方文档:https://wiki.qt.io/Qt_Coding_Style/zh

#include <QMainWindow>

class MyMainWindow : public QMainWindow
{
	Q_OBJECT

public:
	MyMainWindow(QWidget* parent = nullptr);
	~MyMainWindow();
};

新建mymainwindow.cpp

#include "mymainwindow.h"

MyMainWindow::MyMainWindow(QWidget* parent)
	: QMainWindow(parent)
{
	// TODO
}

MyMainWindow::~MyMainWindow() {}

更改main.cpp

#include <QApplication> 
#include "mymainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MyMainWindow mainWindow;
    mainWindow.show();

    return a.exec();
}
  • 我把QCoreApplication改成了QApplication。如果不改的话,运行会报错:QWidget: Cannot create a QWidget without QApplication
  • 如果你运行的时候只有console黑窗,没有window窗口,尝试点击黑窗并按一下回车键

运行,于是你会多得到一个迷你窗口。它实在是太小啦,更多设置就交给你来写代码了 😃
在这里插入图片描述

5. .qrc添加其它资源

新建.qrc文件

在这里插入图片描述
在这里插入图片描述
建好之后Resource.qrc文件默认不在src\文件夹下,我们需要手动移一下。

新建src\icon\文件夹,随便截个图,放张图片进去。我截了csdn的log。

修改.qrc文件如下:

<RCC>
    <qresource prefix="/">
        <file>icon/csdn.png</file>
    </qresource>
</RCC>

于是这张图片的引用路径为::/icon/csdn.png

prefix前缀用于给资源分类,作用类似于C++的命名空间机制。除非资源数量较多且复杂,一般用不到prefix吧。
假设.qrc中prefix设为/myPrefix,文件路径为myDir/icon.png那么,图片引用路径是::/myPrefix/myDir/icon.png

在mymainwindow.cpp的TODO位置添加以下代码:

// 记得添加头文件 #include <QLabel>
QLabel* label = new QLabel(parent);
QImage image(":/icon/csdn.png");
label->setPixmap(QPixmap::fromImage(image));
this->setCentralWidget(label);

运行!你将会看到:
在这里插入图片描述

6. 我不想要黑窗

console窗口的存在有助于我们用输出日志的方式debug,但看起来确实有点碍眼,对于不是程序员的用户来说。

如果你喜欢,可以把这个控制台窗口去掉,方法参考:VS+QT 显示console+不显示

cmake移植

问:如果你把写好的工程放到github上,将来想回头看时,或者别人想clone下来参考时,VS版本、环境库、系统与你不一样,怎么办?

答:用cmake实现跨平台构建

首先,你需要把Qt的路径配置到环境变量中。由cmake生成的.sln文件与Qt直接给好的模板还是稍有不同的,如果没设置这个环境变量,到时候运行起来会报错找不到Qt5Widgets.dll。

在这里插入图片描述
改完之后记得重启电脑,新的环境变量才会生效。

然后,在项目根目录下新建文件CMakeLists.txt。复制以下内容。文本量有点大,着重留意第12行的命令和第11行的注释即可。

# 设置cmake版本号
cmake_minimum_required(VERSION 3.8)

# 设置工程名称
project(helloworld)

# 设置C++标准为17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# !!!你需要将QT_PREFIX_PATH后的路径改为你本地对应的Qt安装目录!!!
set(QT_PREFIX_PATH "D:/Softwares/Qt/5.15.2/msvc2019_64")
set(CMAKE_PREFIX_PATH ${QT_PREFIX_PATH})

# 包含Qt头文件
include_directories(${QT_PREFIX_PATH}/include)

# 开启元对象编译器的自动编译,解析信号与槽机制,生成Qt的moc文件
set(CMAKE_AUTOMOC ON)
# 开启qrc资源文件的自动编译,解析Qt的.qrc文件
set(CMAKE_AUTORCC ON)

# 查找需要的Qt模块
find_package(Qt5 COMPONENTS Widgets REQUIRED)  
find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(Qt5 COMPONENTS Gui REQUIRED)

# 查找源文件
file(GLOB HEADER_FILES ${PROJECT_SOURCE_DIR}/src/*.h)
file(GLOB SOURCE_FILE ${PROJECT_SOURCE_DIR}/src/*.cpp)
file(GLOB RESOURCE_FILE ${PROJECT_SOURCE_DIR}/src/*.qrc)

# 整理生成的.sln的资源目录与本地文件目录保持一致,否则文件们会乱成一盘
# 要group的文件一定也都要放进add_executable命令里,否则不生效
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${HEADER_FILES})
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${SOURCE_FILE})
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${RESOURCE_FILE})

# 指定源文件来生成可执行文件
add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILE} ${RESOURCE_FILE})

# 链接Qt库
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets)

# 设置启动项
set_property ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME} )

Qt元对象编译器moc,参考知乎 https://zhuanlan.zhihu.com/p/614208869
Qt + cmake,参考Qt官方文档《Get started with CMake

在项目根目录下(也就是CMakeLists.txt所在的目录哈),打开cmd窗口,执行以下命令:

cmake .

打开生成的helloworld.sln文件。运行。成功!

一些开发经验分享

  1. 我的开发步骤:
    设定目标效果 -> 查官方文档的API和教程,理解控件的存在原由和适用范围 -> 一边上手写,一边用chatgpt加速debug -> 遇到chagpt不会的bug,用英文搜谷歌,在StackOverflow查帖子,任何奇特的需求你都可以在谷歌找到经他人验证过的解决方案
  2. 一开始用Qt可以一锅乱炖。但要想有所提高,就必须会Model/View模式,参考:Qt 6.6 > Qt Widgets Model/View Programming
    如果你写过java,你或许会知道MVC模式,但在Qt,它倡导的是MV模式。我的理解是,Qt提供的众多基类虽然只有Model和View的区别,但只要它们之间绑上了关系,背后就会有隐式的connect机制调用,也就是隐式地实现了control的功能。所以一般不需要程序员另外实现control了。
  • 28
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,下面是配置 Qt Visual Studio 环境的步骤: 1. 下载 Qt 安装包 你可以在 Qt 官网上下载适合你 Windows 系统的 Qt 安装包,选择对应的版本和组件进行下载。 2. 安装 Qt 运行下载好的 Qt 安装包,按照提示进行安装。在安装过程中,你可以选择安装路径和组件,也可以使用默认设置。安装完成后,你可以在安装的目录下找到 Qt Visual Studio 工具集。 3. 安装 Visual Studio 插件 在 Qt 安装目录下找到“Tools\Qt Visual Studio Tools”,运行“QtVsToolsInstaller.exe”安装文件,按照提示进行安装。安装完成后,你需要重启 Visual Studio。 4. 创建 Qt 项目 在 Visual Studio 中创建一个新的 Qt 项目。选择“文件”-“新建”-“项目”,在弹出的对话框中选择“Qt”-“Qt5 Project”,并按照提示进行设置。创建完成后,你可以在“解决方案资源管理器”面板中看到你的项目。 5. 配置 Qt 版本 在 Visual Studio 中打开你的项目,右键点击项目,选择“属性”,进入“Qt 选项”页面。在该页面中,你需要添加 Qt 版本,并设置相关参数。这里需要设置 Qt 安装路径、版本号和模块等。 6. 编写代码并运行 在 Visual Studio 中打开你的项目,编写代码并保存。点击工具栏上的“本地 Windows 调试器”按钮或者使用快捷键 F5 运行你的程序。 以上就是配置 Qt Visual Studio 环境的步骤。希望能够帮助到你。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值