QT课程 QT介绍

news2024/10/5 17:43:16

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:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20230519124657753.png)]

常用快捷键:ctrl+R运行 alt+0 开启侧边栏
ps:最近在做qt项目文章写的有点慢了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue之插值表达式,v-bind(单向绑定),v-model(双向绑定)

文章目录 前言一、插值表达式二、v-bind指令三、v-model指令总结 前言 插值表达式{{…}} v-bind v-model 一、插值表达式 插值表达式支持匿名变量、三目运算符、四则运算符、比较运算符、数值类型的一些内置方法&#xff0c;还有数组的索引取值方法和对象属性。 <!DOCTYPE…

安全工具 | CMSeeK [指纹识别]

0x00 免责声明 本文仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担…

2023年北京.NET线下技术沙龙圆满落幕!

5月20日&#xff0c;MASA技术团队在北京举办的“2023年北京.NET线下技术沙龙”圆满落幕&#xff01;整个活动气氛热烈&#xff0c;嘉宾们的分享内容丰富多彩&#xff0c;现场观众都受益匪浅。我们期待着更多这样的技术交流活动&#xff0c;让.NET社区不断发展和进步。 本次活动…

材料电磁参数综合测试解决方案 材料吸波、屏蔽性能测试系统 (10MHz~500GHz)

材料吸波、屏蔽性能测试系统测试频率范围可达10MHz&#xff5e;500GHz&#xff0c;可实现材料反射率、屏蔽性能特性参数测试。系统由矢量网络分析仪、测试夹具、系统软件等组成&#xff0c;根据用户不同频率、材料性能测试需求&#xff0c;可选用弓形框法、便携式反射率测试法进…

如何快速实现接口自动化测试,常规接口断言封装实践

目录 前言&#xff1a; 一、框架设计思路 1. 封装请求方法 2. 断言封装 3. 接口封装 4. 接口统一管理 二、框架使用 三、总结 前言&#xff1a; 在当今互联网行业中&#xff0c;接口自动化测试已经成为了非常重要的测试手段之一。而在这个过程中&#xff0c;接口自动化…

3年外包裸辞,面试阿里、字节全都一面挂,哭死.....

测试员可以先在外包积累经验&#xff0c;以后去大厂就很容易&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓今年今天履历只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大…

性能优化 面试

性能分析 1.页面加载性能&#xff08;加载时间&#xff1b;用户体验&#xff09; 2.动画与操作性能&#xff08;是否流畅无卡顿&#xff09; 3.内存占用&#xff08;内存占用过大&#xff0c;浏览器崩掉等&#xff09; 4.电量消耗&#xff08;游戏方面&#xff0c;暂不考虑&…

【SpringBoot】九:Web服务---文件上传

文章目录 1.MultipartFile API2.上传文件 1.MultipartFile API 在 Controller 的方法加入形参RequestParam MultipartFile。 MultipartFile 表示上传的文件&#xff0c;提供了方便的方法&#xff0c;保存文件到磁盘。 方法作用getName()参数名称&#xff08;upfile&#xff0…

pymongo给文档里的某个列表添加元素并去重以及操作符的表格

文章目录 问题描述知识点收集mongo的操作符:匹配符&#xff1a;选择符&#xff1a;函数操作&#xff1a;更新符&#xff1a;聚集符&#xff1a;字段操作符&#xff1a; 问题描述 给parts列表新增字典 新增前: 新增后: 代码: mongo_client get_mongo_client()col mongo_cli…

【ZYNQ】ZYNQ7000 UART 控制器及驱动示例

简介 UART 控制器介绍 UART 控制器是一个全双工异步收发控制器&#xff0c;ZYNQ 内部包含两个 UART 控制器&#xff0c;UART0 和 UART1。每一个 UART 控制器支持可编程的波特率发生器、64 字节的接收 FIFO 和发送 FIFO、产生中断、RXD 和 TXD 信号的环回模式设置以及可配置的…

第一个SpringBoot程序

如何创建一个SpringBoot项目&#xff0c;两种方式&#xff0c;官网或IDEA 官方提供了一个快速生成的网站&#xff0c;IDE集成了这个网站 spring官网 Spring | Homehttps://spring.io/进入spring官网&#xff0c;点击projects&#xff0c;点击SpringBoot&#xff0c;进到如下…

前端设计必须知道!7个超实用的工具推荐!

前端网络开发作为一个高薪行业&#xff0c;近年来的繁荣是业内人士所看到的。网络开发工具也在上升&#xff0c;市场上出现了越来越多的前端页面设计工具。但随着前端页面设计工具数量的增加&#xff0c;找到合适的前端页面设计工具来完成工作有时会让开发团队感到困惑。 本文…

看不上的年金险

前言 像我这种“资深”股民&#xff0c;激进的有股票期货&#xff0c;稳健的有国债、政策性金融债、地方政府债、城投债&#xff0c;中间的还有etf、宽基指数、指增基金&#xff0c;平时因为对冲风险买点保障性保险也就罢了&#xff0c;储蓄型的保险压根看不上。 但现在通过熬…

Golang语言初识

Windows 下搭建 Go 开发环境-安装和配置 SDK 采用文章 2.5.1介绍了 SDK SDK 的全称(Software Development Kit 软件开发工具包)SDK 是提供给开发人员使用的&#xff0c;其中包含了对应开发语言的工具包 2.5.2下载 SDK 工具包 1) Go 语言的官网为&#xff1a;golang.org , 因…

基于单片机的步进电机驱动电路设计

基于单片机的步进电机驱动电路设计 步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移&#xff0c;并且可用作电磁制动轮、电磁差分器、或角位移发生器等。 有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用&#xff0c;一般需自己设计驱动…

Flask 设置头像及创建帖子模型类

我们经常在一些网站上看到&#xff0c;在用户没有自定义头像的情况下&#xff0c;会给每个用户都生成一个头像&#xff0c;这让网站显得更美观&#xff0c;那这个是怎么实现的呢&#xff1f;在Flask中有一个插件&#xff0c;叫做Flask-avatars&#xff0c;专门提供头像解决方案…

UNIX网络编程卷一 学习笔记 第十五章 Unix域协议

本书中&#xff0c;作者说Unix域数据报套接字是不可靠的&#xff0c;这一说法已经过时&#xff0c;当前大多实现中&#xff0c;Unix域套接字都是可靠的&#xff0c;不论是数据报套接字还是字节流套接字。 Unix域协议不是一个实际的协议族&#xff0c;而是单个主机上执行客户/服…

人员定位及轨迹管理技术原理及应用领域

人员定位及轨迹管理的实现涉及多种技术和设备。例如&#xff0c;在GPS定位方面&#xff0c;使用卫星系统可以提供全球范围内的准确定位信息。然而&#xff0c;GPS在室内环境下的信号覆盖可能存在限制&#xff0c;因此在室内定位应用中&#xff0c;常常采用无线传感器网络&#…

Python简单的验证码识别: 图片验证, 滑动验证, 点选验证...

目录 前言环境使用:模块使用:代码展示图片验证码滑动验证码:点选验证: 尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用: selenium --> pip install selenium3.141.0 ddddocr --> pip i…

springcloud-alibaba (03)sentinel实现规则持久化-流控规则为例

Sentinel和Nacos的整合可以实现规则动态配置&#xff0c;即在Nacos中修改规则后&#xff0c;Sentinel能够实时地读取并应用新的规则。而规则持久化则是指将规则保存在Nacos中&#xff0c;以避免意外故障或重启时规则被丢失。 实现规则持久化&#xff0c;可以按照以下步骤进行操…