您现在的位置是:首页 >技术交流 >QT课程 QT介绍网站首页技术交流
QT课程 QT介绍
QT介绍(了解)
Qt是一个基于C++开发语言的图形用户界面开发(GUI)框架。界面开发知识Qt的一部分,实际上Qt也可以支持很多其他的功能,比如:网络编程、文件IO、图形图像处理等。
Qt在嵌入式领域最大的功能是进行上位机开发。
1.上位机和下位机
在嵌入式系统中,下位机通常是指嵌入式设备、传感器、执行器等物理设备,而上位机则是连接到下位机的计算机系统。上位机可以通过串口、以太网、无线通信等方式与下位机进行数据交换和控制命令传递。
上位机的功能通常包括:
- 数据采集和监测:从下位机获取传感器数据、设备状态等信息。
- 控制和调度:向下位机发送控制指令,控制下位机的操作和行为。
- 数据处理和分析:对从下位机获取的数据进行处理、分析和可视化。
- 用户界面和交互:提供用户友好的界面,允许用户与下位机进行交互和配置。
2.QT开发环境配置
2.1编码
编码设置为UTF-8
第一步
第二步
2.2新建项目
第一步
第二步
第三步
第四步
第五步
第六步
第七步
第八步
2.3导入项目
我们先看一下生成的文件有那些
红框出来的文件是Qt根据电脑生成的文件,这个文件在别的电脑无法使用,在发送给别人项目时候需要删除掉。
点击.pro文件后进入项目
3.项目的架构
项目配置文件.pro
QT += core gui: 这一行指定项目需要使用Qt框架的核心和GUI模块。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets: 这一行使用条件语句,如果Qt的主要版本大于4,则添加widgets模块。这意味着如果使用Qt 4或更早的版本,将不会添加widgets模块。
CONFIG += c++17: 这一行指定使用C++17标准编译项目。
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000: 这一行是一个注释,用于禁用在Qt 6.0.0之前被弃用的API。通过取消注释,可以使代码在使用被弃用的API时无法编译。
SOURCES += main.cpp dialog.cpp: 这一行列出了项目的源文件,包括main.cpp和dialog.cpp。这些文件将被编译并链接到最终的可执行文件中。
HEADERS += dialog.h: 这一行列出了项目的头文件,包括dialog.h。头文件通常包含类的声明和函数原型。
FORMS += dialog.ui: 这一行列出了项目的UI表单文件,包括dialog.ui。UI表单文件是使用Qt的可视化设计工具创建的界面文件。
qnx: target.path = /tmp/$${TARGET}/bin: 这一行是一个条件语句,如果目标操作系统是QNX,则将目标文件安装到/tmp/$${TARGET}/bin目录中。
else: unix:!android: target.path = /opt/$${TARGET}/bin: 这一行是另一个条件语句,如果目标操作系统是除Android之外的Unix系统,则将目标文件安装到/opt/$${TARGET}/bin目录中。
!isEmpty(target.path): INSTALLS += target: 这一行将target.path指定的目录添加到安装规则中,以便在构建完成后将目标文件安装到指定目录中。
头文件声明.h
#ifndef DIALOG_H: 这是一个条件预处理指令,用于防止头文件重复包含。DIALOG_H是一个宏定义,如果尚未定义,将执行下面的代码,否则将跳过整个头文件的内容。
#define DIALOG_H: 这是一个宏定义,将DIALOG_H定义为当前位置,以防止头文件重复包含。
#include <QDialog>: 这是包含另一个头文件的指令,将QDialog头文件包含进来,以便在该头文件中使用QDialog类。
QT_BEGIN_NAMESPACE和QT_END_NAMESPACE: 这两行定义了一个命名空间,将下面的代码放在Qt的命名空间中。这是为了防止全局命名空间污染,并确保类和对象名称的唯一性。
namespace Ui { class Dialog; }: 在Qt的命名空间内声明了一个名为Ui的命名空间,并在其中声明了一个名为Dialog的类。这个类是通过UI设计器生成的代码定义的,用于描述对话框的用户界面。
class Dialog : public QDialog: 这是一个类的声明,定义了一个名为Dialog的类,该类是QDialog类的子类。它表示一个对话框窗口。
Q_OBJECT: 这是一个宏,用于支持Qt的元对象系统。它在类声明中插入了必要的代码,以便在运行时处理信号和槽,以及其他的元对象功能。
public:: 这是一个访问修饰符,表示以下成员函数和成员变量在类外部可访问。
Dialog(QWidget *parent = nullptr);: 这是类的构造函数的声明,接受一个指向QWidget类型的指针作为父窗口,可以为空指针。
~Dialog();: 这是类的析构函数的声明,用于释放对象所占用的资源。
private:: 这是一个访问修饰符,表示以下成员函数和成员变量在类外部不可访问。
Ui::Dialog *ui;: 这是一个私有成员变量,表示对话框的用户界面。它的类型是Ui::Dialog*,指向自动生成的UI类的实例。
#endif // DIALOG_H: 这是条件预处理指令的结束标记,表示结束#ifndef条件块。
源文件定义.cpp
#include "dialog.h": 这是包含头文件的指令,将之前定义的dialog.h头文件包含进来,以便在当前源文件中使用Dialog类。
#include "ui_dialog.h": 这是另一个包含头文件的指令,将生成的UI类的头文件ui_dialog.h包含进来,以便在当前源文件中使用UI的定义。
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog): 这是Dialog类构造函数的定义。它接受一个指向QWidget类型的指针parent作为参数,并初始化QDialog的构造函数,同时创建一个新的Ui::Dialog对象实例并赋值给私有成员变量ui。
ui->setupUi(this): 这一行调用了ui对象的setupUi函数,将当前对话框窗口this传递给它。setupUi函数是由UI设计器生成的代码,在运行时将用户界面设置到对话框窗口中。
Dialog::~Dialog(): 这是Dialog类析构函数的定义。它在对象销毁时被调用,用于释放资源。
delete ui;: 这一行删除之前在构造函数中创建的ui对象,释放它所占用的内存空间。
主程序入口
#include "dialog.h": 这是包含头文件的指令,将之前定义的dialog.h头文件包含进来,以便在当前源文件中使用Dialog类。
#include <QApplication>: 这是包含Qt框架的QApplication头文件的指令,将其包含进来,以便在当前源文件中使用QApplication类。
int main(int argc, char *argv[]): 这是程序的主函数,是程序的入口点。
QApplication a(argc, argv): 这一行创建一个QApplication类的对象a,并传入命令行参数argc和argv。QApplication是Qt框架的应用程序类,用于管理应用程序的执行。
Dialog w;: 这一行创建一个Dialog类的对象w,即对话框窗口对象。
w.show(): 这一行调用对话框窗口对象的show函数,显示对话框窗口。
return a.exec(): 这一行启动应用程序的事件循环,等待事件的发生并响应。a.exec()是QApplication对象的exec函数,它将控制权交给Qt的事件循环,直到应用程序退出。
4.帮助文档(超级重点)
Qt的帮助文档非常重要,Qt的类实在太多,靠单纯的人脑是很难记忆的,需要学会灵活使用帮助文档。
进入帮助文档方式介绍两种:
4.1点击两次F1进入帮助
4.2在右侧导航栏点击帮助进入
(作者电脑上有两个版本QT图片指引可能不同但大体位置相同)
第一步
第二步
第三步
4.3帮助页面介绍(重点)
5.调试类QDebug
Qt输出内容可分为两种,一种是给开发者看,另一种是给用户看。使用QDebug类可以只让开发者观察自己想要看到的信息。
第一步
第二步
注意:QT编程以项目为主,CSDN文章不支持文件上传,只能以网盘的方式分享
测试项目
链接:https://pan.baidu.com/s/1InnKwLid3sXYzPu_MA7IXw
提取码:4xy6
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r9g24Sob-1684478701606)(C:UsersuserAppDataRoamingTypora ypora-user-imagesimage-20230519124657753.png)]
常用快捷键:ctrl+R运行 alt+0 开启侧边栏
ps:最近在做qt项目文章写的有点慢了。。。