💪 图像算法工程师,专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
📝《C++》
Qt软件安装教程见我上一篇博文。
一、Qt软件界面介绍
第一次打开Qt软件后,常用的功能见下,包括创建新项目,打开已有项目,编译运行项目和示例教程等:
二、Qt中创建一个新项目工程文件
2.1 创建项目
点击创建项目,见下:
2.2 项目名称和存放位置
下面自定义命名项目工程的名称,以及项目保存位置:
2.3 构建系统
下面构建系统选择qmake:
2.4 类信息
下面是类信息的填写,包括主窗口界面的类名,基类选择,是否启用设计拖控件功能等:
2.5 翻译文件
下面翻译文件,保持默认:
2.6 构建套件
我的是Windows系统,选择MinGW。
如果选择了MSVC会导致等会创建完成打开后,不能显示头文件和源文件列表,可以在后期配置中选择MinGW,就能正常显示并运行。
2.7 汇总
最后一步是汇总,保持默认即可:
三、项目文件结构
通过上面第二章节的步骤,已经创建好一个Qt项目,并自动生成了头文件,源文件等,见下:
下面对各个文件内容逐行解析,仔细看代码后的注释,我写的很详细。
3.1 .pro文件
创建 Qt 项目时,自动生成的 .pro 文件是 项目名称加上 .pro 后缀的文件。
.pro 文件是 Qt 项目中必不可少的配置文件之一,用于生成实际的 Makefile 或其他构建工具的配置文件。
.pro 文件是 qmake 项目文件,它主要用来管理项目的构建过程,包含以下信息:
项目依赖的模块(如 core、gui 等)。
编译选项和配置(如 C++ 标准)。
源文件、头文件和 UI 文件路径。
平台相关的部署规则。
3.1.1 打开Qt项目工程文件
后期如果想打开以前创建过的Qt项目工程文件,可以在Qt软件中直接打开.pro文件,就能将整个Qt工程打开,见下:
3.1.2 .pro文件内容解析
.pro文件内容解析我都写在了代码后面,见下:
可复制的.pro文件内容见下:
# core:包含 Qt 的核心功能(如事件循环、文件 I/O 等),适用于所有 Qt 程序。
# gui:提供图形用户界面的支持,如窗口、按钮等。
QT += core gui # 指定当前项目依赖的 Qt 模块。
# widgets 模块支持基于小部件(Widget)的界面设计,常见于 Qt 5 和更高版本。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets # 条件语句,检查 Qt 的主版本号是否大于 4。如果当前使用的 Qt 版本高于 4,则添加 widgets 模块。
CONFIG += c++17 # 设置编译器的配置,指定使用 C++17 标准。确保项目可以使用 C++17 的新特性,如结构化绑定、std::optional 等。
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # 果取消注释,编译器会禁用 Qt 6.0.0 之前的所有弃用(Deprecated)API。强制代码使用较新的 Qt API,避免使用过时的功能。适用于需要长期维护的项目。
# 下面是文件配置
SOURCES += \ # 定义项目的源文件列表。每个文件路径用反斜杠(\)换行分隔,后续文件逐行添加。
main.cpp \ # 主程序入口文件。
mywidget.cpp # 自定义窗口类的实现文件。
HEADERS += \ # 定义项目的头文件列表。
mywidget.h # 包含自定义窗口类 myWidget 的声明。
FORMS += \ # 定义项目的 Qt 设计师 .ui 文件列表。
mywidget.ui #界面设计文件,通过 Qt Designer 设计生成。
# 下面是部署规则
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin # 指定 QNX 平台上的目标路径,将项目生成的文件安装到 /tmp/$${TARGET}/bin 目录中。qnx:条件语句,适用于 QNX 平台。$${TARGET}:占位符,代表目标文件名。
else: unix:!android: target.path = /opt/$${TARGET}/bin # 如果不是 QNX 且不是 Android 平台(!android),则适用于 Unix 系统。指定目标路径为 /opt/$${TARGET}/bin。
!isEmpty(target.path): INSTALLS += target # 如果 target.path 不为空(!isEmpty(target.path)),则将 target 添加到 INSTALLS 变量中。指定目标文件的安装路径,用于安装目标文件到指定目录。
3.2 头文件
头文件中内容及代码解析见下:
可复制的mywidget.h文件内容见下:
#ifndef MYWIDGET_H // 头文件保护符,用于防止头文件的重复包含。如果当前文件未被定义(#ifndef),则定义它(#define)。
#define MYWIDGET_H // 当同一个头文件被多次包含时,保护符确保文件内容只被编译一次,避免重复定义的错误。
#include <QWidget> // 引入 QWidget 类的头文件。QWidget 是 Qt 中的基础窗口类,几乎所有窗口和控件类都直接或间接继承自它。
QT_BEGIN_NAMESPACE // 命名空间的宏定义,方便处理 Qt 的命名空间。 这些宏确保 Qt 代码在支持命名空间时编译正确,若不支持命名空间则不会报错。
namespace Ui { // 声明 Ui 命名空间,其中包含由 mywidget.ui 文件自动生成的 Ui::myWidget 类。
class myWidget; // 这个类用于管理用户界面组件。
}
QT_END_NAMESPACE // 命名空间的宏定义,方便处理 Qt 的命名空间。
// Qt 的所有 GUI 控件(窗口、按钮等)都以 QWidget 为基类。
class myWidget : public QWidget // 定义一个自定义窗口类 myWidget,它继承自 Qt 的基础窗口类 QWidget。使 myWidget 具备 QWidget 的所有功能,同时可以扩展自定义功能。
{
Q_OBJECT // Qt 的宏,用于启用信号与槽机制。生成元对象代码(Meta-Object Code),支持 Qt 的信号和槽、属性系统、事件过滤等功能。如果类中需要使用信号与槽机制,则必须包含该宏。
public: // 定义类的公有访问权限,下面的成员函数可以被类的外部访问。
myWidget(QWidget *parent = nullptr); // 声明构造函数。parent:指向父窗口的指针,默认值为 nullptr(表示没有父窗口)。
~myWidget(); // 声明析构函数。销毁 myWidget 类的实例,并释放资源。
private: // 定义类的私有访问权限,下面的成员变量只能在类内部访问。
Ui::myWidget *ui; // 定义一个指针变量 ui,指向 Ui::myWidget 类的实例。
// 用于管理 mywidget.ui 文件中定义的用户界面组件。通过指针访问 UI 中的控件(如按钮、文本框等)。
};
#endif // MYWIDGET_H //与文件开头的 #ifndef 和 #define 对应,结束头文件保护符。确保文件内容仅在首次包含时编译,防止重复包含引发的错误。
3.3 源文件
3.3.1 mywidget.cpp源文件
mywidget.cpp源文件代码及解析见下:
可复制的mywidget.cpp源文件内容见下:
#include "mywidget.h" // 引入 mywidget.h 头文件,用于提供 myWidget 类的声明和依赖。
#include "ui_mywidget.h" // 引入 ui_mywidget.h 文件,该文件由 Qt 的 UIC 工具(用户界面编译器)根据 mywidget.ui 文件自动生成,负责定义用户界面相关的类和方法。
myWidget::myWidget(QWidget *parent) // 定义 myWidget 类的构造函数。参数 parent 是指针类型,指向父窗口(若为空,则表示没有父窗口)。
: QWidget(parent) // 初始化,调用QWidget(父类)的构造函数,把parent传进去。Qt 中父子关系用于管理窗口层级和资源释放,子窗口随父窗口一起销毁。
, ui(new Ui::myWidget) // 初始化 ui 成员变量。ui 是一个指针,指向自动生成的 Ui::myWidget 类,用于操作界面组件
{
ui->setupUi(this); // 调用 setupUi 方法,为当前窗口(this)设置用户界面。setupUi 方法会将 mywidget.ui 文件中定义的界面布局、控件等加载到当前窗口。
}
myWidget::~myWidget() // 定义 myWidget 类的析构函数,在对象销毁时自动调用。
{
delete ui; // 释放 ui 指针所指向的内存。确保在窗口销毁时,ui 对象(及其管理的界面控件)被正确释放,避免内存泄漏。
}
3.3.2 main.cpp源文件
main.cpp源文件代码及解析见下:
可复制main.cpp源文件内容见下:
#include "mywidget.h" // 引入 mywidget.h 头文件。mywidget.h 文件中定义了自定义的窗口类 myWidget。
#include <QApplication> // 包含一个应用程序类的头文件。引入 QApplication 类的头文件。QApplication 是 Qt 中用于管理 GUI 应用程序的核心类,负责初始化应用程序、事件处理和消息循环等。
// main程序入口。 argc命令行参数的个数。 argv命令行参数的字符数组。
// Qt 中支持从命令行传递参数并通过 argv 获取,如配置启动参数或调试标志。
int main(int argc, char *argv[])
{
QApplication a(argc, argv); // 创建一个 QApplication 对象,名称为 a。在Qt中,应用程序对象,有且仅有一个
myWidget w; // 创建一个 myWidget 类的对象,名称为 w。myWidget 是自定义窗口类,继承自 QWidget。此对象表示一个窗口实例,但创建后默认是隐藏状态。
w.show(); // 调用 show() 方法显示窗口。在 Qt 中,窗口对象在创建时默认是隐藏状态,需要手动调用 show() 方法将其显示到屏幕上。show() 会触发窗口的绘制事件,使其成为可见的 GUI 窗口。
// 让应用程序对象进入消息循环机制中,当代码阻塞到这行
return a.exec(); // 启动应用程序的事件循环。
}
/*
QApplication 对象在一个 Qt 应用程序中必须有且仅有一个。
它负责:
初始化应用程序的图形用户界面环境。
管理主事件循环。
处理所有用户事件(如鼠标点击、按键等)。
将命令行参数 argc 和 argv 传递给 QApplication,方便配置启动选项。
* /
/*
特点:
a.exec() 方法会进入消息循环,阻塞当前线程。
该方法等待并处理用户事件(如鼠标点击、按键等)以及操作系统信号,直到程序退出。
返回值:
应用程序正常退出时返回 0,异常退出时可能返回非 0 值。
*/
四、测试
4.1 运行main.cpp
点击Qt软件中左下角的Run按钮,就可以运行代码。运行代码的快捷键为Ctrl+R,见下:
4.2 运行结果
运行代码后如果弹出下面的对话框,说明项目创建成功,并能正常运行:
五、Qt重用快捷键
5.1 文件与项目相关
新建文件/项目:
Ctrl + N
打开文件/项目:
Ctrl + O
保存文件:
Ctrl + S
保存所有文件:
Ctrl + Shift + S
关闭文件:
Ctrl + W
退出 Qt Creator:
Ctrl + Q
5.2 代码编辑相关
自动补全代码:
Ctrl + Space
快速注释/取消注释:
Ctrl + /
代码缩进:
Tab
取消代码缩进:
Shift + Tab
快速格式化代码:
Ctrl + Shift + I
跳转到定义:
F2
返回跳转前的位置:
Ctrl + Alt + Left
跳转到下一个位置:
Ctrl + Alt + Right
查找替换:
查找:
Ctrl + F
替换:
Ctrl + R
5.3 代码编辑相关
启动调试:
F5
停止调试:
Shift + F5
单步执行(Step Over):
F10
进入函数(Step Into):
F11
跳出函数(Step Out):
Shift + F11
设置/取消断点:
F9
5.4 视图与窗口操作
切换到编辑模式:
Ctrl + 2
切换到设计模式:
Ctrl + 3
切换到调试模式:
Ctrl + 4
全屏模式:
Ctrl + Shift + F11
显示/隐藏侧边栏:
Alt + 0
5.5 导航与搜索
快速打开文件:
Ctrl + E
快速定位符号:
Ctrl + K
跳转到上一处修改:
Ctrl + Shift + Z
显示类视图:
Ctrl + 1
查找文件:
Ctrl + Shift + O
5.6 运行相关
构建项目:
Ctrl + B
运行项目:
Ctrl + R
清理项目:
Ctrl + Shift + B
5.7 实用快捷键
显示帮助文档:
F1
显示项目结构树:
Alt + 1
显示问题列表:
Alt + 2
5.8 自定义快捷键
如果默认快捷键不适合你的习惯,你可以通过以下路径自定义:
路径:工具 (Tools) → 选项 (Options) → 环境 (Environment) → 快捷键 (Keyboard)。
通过熟练使用这些快捷键,可以显著提高在 Qt 中的开发效率!
六、可执行程序
在每次成功运行Qt项目后都会自动生成一个可执行文件,后期使用直接双击可执行文件就能使用开发好的UI界面,具体存放位置:Demo_1\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug\debug
七、Qt帮助助手
在安装Qt过程中,有一个Qt帮助助手可执行程序,后期再遇到不会的Qt控件时,可单独运行此程序查看文档。
可执行帮助程序的存放路径:D:\APP\Qt_C++\Qt_path\6.8.1\mingw_64\bin。此路径是自己安装Qt包的路径,见下:
双击assistant.exe运行结果见下:
八、总结
在Qt软件中创建Qt项目运行并测试,Qt常用快捷键的详细图文教程,希望能帮到你!
感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖
关注下面「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!