您现在的位置是:首页 >技术交流 >QT课程 QT介绍网站首页技术交流

QT课程 QT介绍

SouthernBird 2024-06-19 13:56:19
简介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项目文章写的有点慢了。。。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。