当前位置: 首页 > news >正文

Qt第一课

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


QT

  • **作者前言**
  • 初识QT
    • 客户端开发的首要任务
    • Qt开发工具
    • 安装QT
    • QT环境变量配置
  • QT 提供的工具
  • 创建一个文件
  • Qt文件的认识
    • main文件的认识
  • 代码认识
    • widget,h的认识
    • widget.cpp的认识
    • Form文件夹
    • Qt的项目工程文件
    • 运行文件生成的临时文件

初识QT

QT属于一种前端开发技术,现特指用来进行桌面开发,也就是客户端开发
QT无法开发网页前端,也不能开发移动应用(目前是可以了)

优势:
不仅支持windos, 还支持Linux和MAC及嵌入式系统*+,可以 跨平台使用

QT是一种跨平台的c++图形化界面用户应用程序框架

客户端开发的首要任务

进行编写和用户交互的界面
和用户进行交户的界面有两种风格
1. 命令行界面(黑框框)统称为TUI
2. 图形化界面同称为GUI

Qt开发工具

安装三个部分:

  1. C++的编译器(比如gcc、cl.exe…)
  2. QT的SDK, 软件开发包, windows版本的QT内置了C++编译器
    如果想使用vs内置的c++的编译器.需要配置很多额外的东西,容易出错
  3. QT集成的开发环境
    有三种
    (1) Qt官方提供的QT creator, 容易上手,比较适合初学者
    (2) visual studio, 功能更强,需要额外配置更多, 安装QT插件有点麻烦
    (3) Eclips

整体来说,只要安装QT SDK

官方
这个连接下载很慢,所以不建议
清华云
可以使用这个

安装QT

下载好后,我们运行安装, 后面我们会碰见这样的页面
在这里插入图片描述
红框那个就是QT SDK中内置的c++编译器, 一个window版本的编辑器,这里我全选了,安装速度会很慢, 但是

QT环境变量配置

我们需要找到我们电脑里面的环境变量窗口,如图:在这里插入图片描述
有两个环境的窗口,一个是用户变量,一个是系统变量,
然后找到需要添加进去的链接,这里我只选择了,如图
在这里插入图片描述
A:\QT\QT\5.14.2\mingw73_64\bin,这个链接添加进去,你们也可以全部添加进去,选择用户变量或者系统变量其中一个就行,

然后找到path 进行添加就行

在这里插入图片描述

QT 提供的工具

QT SDK配置好,安装好后,
我们查看左下图
在这里插入图片描述
然后我们点击第一个
在这里插入图片描述

就会点开QT助手,这个是离线的
在这里插入图片描述

然后往下滑,找到如图:
在这里插入图片描述
Designer ,这个是图形化界面的工具, 通过拖拽的方式快速生成界面,后面经常使用

最后找到Qt的集成开发工具,

在这里插入图片描述

创建一个文件

在这里插入图片描述
然后我们直接点击这个
在这里插入图片描述

.来到这个界面,
在这里插入图片描述
这三个选项是构建工具, 其中qmake是老牌的Qt构建工具, 而CMake 并非Qt专属的,很多开源项目都会使用CMake, Qbs是新一代出现的,实际上用的人很少,官方也不怎么维护了,所以我们使用qmake就行,
然后我们再来到这个界面
在这里插入图片描述
使用Base class 会自动生成一些代码, 其中包含一个类,当我们点击的时候,会有三个基类
在这里插入图片描述·
Qmainwindons 完整的应用程序窗口(包含有菜单栏,工具栏,状态栏…)
Qwiget 表示一个控件
QDialog表示一个对话框
我们一般选择第二个就行
如图:
在这里插入图片描述
其中 form file
在这里插入图片描述
然后点击下一步
在这里插入图片描述
这个一般是国际化的,可以忽略,点击下一步
在这里插入图片描述

然后选择编译器,这里我选择如图的,
然后点击下一步
在这里插入图片描述
图中可以选择git,也可以不选,git就是把代码上传到gitee仓库里面

Qt文件的认识

main文件的认识

当我们创建完文件的时候,可以看到如图:
在这里插入图片描述
当我们运行的时候就会弹出一个小框,需要注意的是,文件路径不能有中文,不然会报错

然后我们来一一的介绍其中的代码的意思

代码认识

在这里插入图片描述
这里这一行的man里面的参数,第一个参数是 argv的长度减1后的结果, 这个argv里面存储的就是命令行指令地址,我们输入的命令行以空格为切割符切割,依次把切割后的内容存储进去
在这里插入图片描述
接下的代码如图:
在这里插入图片描述
这个是编写Qt的图形化界面程序必须要有的对象,

下一行代码如图:
在这里插入图片描述
这个类和我们刚开始创建文件的时候,创建的类名是一样的,而widget的基类就是Qwidget
如图:
在这里插入图片描述
其中

w.show();

显示控件, 如果要隐藏控件可以使用hide()

widget,h的认识

接下来
我们看看我widget类的内容,点开头文件
在这里插入图片描述
我们可以看到如下:
#ifndef WIDGET_H
#define WIDGET_H这个写法是保证只包含一次, 但是还是建议使用 #pragma once
接下面的代码其他的意思如图,
在这里插入图片描述
需要注意的是Qt内置的类,一般都是头文件的名字,如果一个头文件里面包含了其他头文件,当我们引用这个头文件,这个头文件里面引入的头文件也会跟着引入进来的,不需要再次包含
接下来我们往下看会看到如图:
在这里插入图片描述
这是一个宏,这个宏有啥作用呢, 在Qt中有一个非常核心的机制就是"信号和槽", 如果某个类想要使用"信号和槽"就必须引用Q_OBJECT这个
接下来我们看到构造函数里面
在这里插入图片描述
在Qt中引入了一个对象树(后面讲解), 创建的Qt的对象就可以把这个对象放到这个树里面去, 挂上去的时候,我们就需要指定父节点, 前面数据结构我们讲过树, 一个节点可以有多个子节点,但是该节点只能有一个父节点

最后我们看到widget的成员ui, 和form file密切相关

widget.cpp的认识

我们再看到 widget.cpp文件里面
-

Form文件夹

然后我们看到Forms文件夹里面的文件
在这里插入图片描述
当我们双击这个ui文件,就会看到一个窗口
在这里插入图片描述
其中灰色的就是程序生成的程序窗口
在这里插入图片描述
左边的分布
在这里插入图片描述
这个是工具,可以通过拖拽的方式放到程序窗口中,
然后我们点击左边框的编辑窗口就会看到一些代码
如图:
在这里插入图片描述
这个就是ui文件里面的本体了
图中的这个格式就是xml格式, 和HTML的格式很相似的,都是通过标签来表示数据的,
这些标签的含义由QT开发的大佬决定, html的标签是固定死的,而xml标签我们可以自定义
在Qt中使用xml文件就是描述程序的界面是啥样式, 然后进一步通过qmake调用相关的工具,依据这个xml文件生成一些c++代码,从而把完整的界面构建出来
在这里插入图片描述

Qt的项目工程文件

在这里插入图片描述
这个就是qmake工具构建时候的重要依据
如图:
在这里插入图片描述
这个文件和qmake搭配起来相当于Linux的makefile文件

运行文件生成的临时文件

当我们运行程序的时候,就会生成一些临时文件, 我们查看对应的存放我们创建的文件对应的文件夹里面
在这里插入图片描述
当我们点进去看的时候
在这里插入图片描述
这个ui_widget.h也就对应了前面的widget,cpp里面包含的头文件, 我们点击进去就会看到,
在这里插入图片描述
这个就是根据xml生成的c++文件
我们需要知道
在这里插入图片描述
cpp文件中的Ui::widget类型就是Ui_widget,
那是因为后面的代码如图:
在这里插入图片描述
这也就可以解释了

相关文章:

Qt第一课

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…...

论“graphics.h”库,easyx

前言 别人十步我则百,别人百步我则千 你是否有这样的想法,把图片到入进c里,亦或者能实时根据你发出的信息而做出回应的程序,graphics.h这个库完美满足了你的需求,那今天作者就给大家介绍一下这个库,并做一些…...

如何在寂静中用电脑找回失踪的手机?远程控制了解一下

经过一番努力,我终于成功地将孩子哄睡了。夜深人静,好不容易有了一点自己的时间,就想刷手机放松放松,顺便看看有没有重要信息。但刚才专心哄孩子去了,一时就忘记哄孩子之前,顺手把手机放哪里去了。 但找过手…...

Android 实现动态换行显示的 TextView 列表

在开发 Android 应用程序时,我们经常需要在标题栏中显示多个 TextView,而这些 TextView 的内容长度可能不一致。如果一行内容过长,我们希望它们能自动换行;如果一行占不满屏幕宽度,则保持在一行内。本文将带我们一步步…...

Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间

题目&#xff1a; 题解&#xff1a; type SummaryRanges struct {*redblacktree.Tree }func Constructor() SummaryRanges {return SummaryRanges{redblacktree.NewWithIntComparator()} }func (ranges *SummaryRanges) AddNum(val int) {// 找到 l0 最大的且满足 l0 < val…...

Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)

目录 准备工作 一.Xshell中操作 &#xff08;1&#xff09;在虚拟机中安装mysql &#xff08;2&#xff09;连接Windows数据库 &#xff08;3&#xff09;进入linux数据库。 &#xff08;4&#xff09;修改mysql配置文件 二.Windows命令窗口操作 需要软件虚拟机&#xff0c;Xsh…...

【数学建模】MATLAB快速入门

文章目录 1. MATLAB界面与基本操作1.1 MATLAB的基本操作 2. MATLAB字符串和文本2.1 string变量2.2 char变量 3. MATLAB的矩阵运算 1. MATLAB界面与基本操作 初始界面&#xff1a; 刚开始的界面只要一个命令行窗口&#xff0c;为了使编辑界面出现我们需要新建一个文件&#xff…...

【ubuntu24.04】k8s 部署5:配置calico 镜像拉取

kubeadm - 中国大陆版建议:初始化Kubeadm –apiserver-advertise-address 这个地址是本地用于和其他节点通信的IP地址 –pod-network-cidr pod network 地址空间 sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-add…...

Elasticsearch 的数据备份与恢复

在生产环境中&#xff0c;数据的安全性和可靠性至关重要。对于基于 Elasticsearch 的系统而言&#xff0c;数据备份与恢复是确保数据完整性、应对灾难恢复的关键操作。本文将详细介绍 Elasticsearch 中如何进行数据备份与恢复&#xff0c;帮助管理员构建一个可靠的数据保护策略…...

Ps:首选项 - 暂存盘

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“暂存盘” Scratch Disks选项卡通过合理配置和管理暂存盘&#xff0c;可以显著提高 Photoshop 的运行性能&#xff0c;特别是在处理复杂的设计项目或大型图像文件时。选择合适…...

力扣217题详解:存在重复元素的多种解法与复杂度分析

在本篇文章中&#xff0c;我们将详细解读力扣第217题“存在重复元素”。通过学习本篇文章&#xff0c;读者将掌握如何使用多种方法来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第217…...

享元模式:轻量级对象共享,高效利用内存

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;用于减少对象数量、降低内存消耗和提高系统性能。它通过共享相似对象的内部状态&#xff0c;减少重复创建的对象。下面将具体介绍享元模式的各个方面&#xff1a; 组成 抽象享元&#xff0…...

人工智能-自然语言处理(NLP)

人工智能-自然语言处理&#xff08;NLP&#xff09; 1. NLP的基础理论1.1 语言模型&#xff08;Language Models&#xff09;1.1.1 N-gram模型1.1.2 词嵌入&#xff08;Word Embeddings&#xff09;1.1.2.1 词袋模型&#xff08;Bag of Words, BoW&#xff09;1.1.2.2 TF-IDF&a…...

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)---创建自定义激光雷达Componet组件

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…...

C++ 设计模式——策略模式

策略模式 策略模式主要组成部分例一&#xff1a;逐步重构并引入策略模式第一步&#xff1a;初始实现第二步&#xff1a;提取共性并实现策略接口第三步&#xff1a;实现具体策略类第四步&#xff1a;实现上下文类策略模式 UML 图策略模式的 UML 图解析 例二&#xff1a;逐步重构…...

【书生大模型实战营(暑假场)闯关材料】基础岛:第3关 浦语提示词工程实践

1.配置环境时遇到的问题 注意要使用terminal&#xff0c;而不是jupyter。 否则退出TMUX会话时&#xff0c;会出问题。 退出TMUX会话命令如下&#xff1a; ctrlB D # 先按CTRLB 随后按D另外一个是&#xff0c;端口转发命令 ssh -p XXXX rootssh.intern-ai.org.cn -CNg -L …...

C++ | Leetcode C++题解之第350题两个数组的交集II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());int length1 nums1.size(), length2 nums2…...

遗传算法原理与实战(python、matlab)

遗传算法 1.什么是遗传算法 遗传算法&#xff08;Genetic Algorithm&#xff0c;简称GA&#xff09;是一种基于生物进化论和遗传学原理的全局优化搜索算法。它通过模拟自然界中生物种群的遗传机制和进化过程来解决复杂问题&#xff0c;如函数优化、组合优化、机器学习等。遗传…...

《黑神话:悟空》媒体评分解禁 M站均分82

《黑神话&#xff1a;悟空》媒体评分现已解禁&#xff0c;截止发稿时&#xff0c;M站共有43家媒体评测&#xff0c;均分为82分。 部分媒体评测&#xff1a; God is a Geek 100&#xff1a; 毫无疑问&#xff0c;《黑神话&#xff1a;悟空》是今年最好的动作游戏之一&#xff…...

安卓中携程和线程的区别。携程是指什么?

在安卓和其他编程环境中&#xff0c;协程&#xff08;Coroutine&#xff09;和线程&#xff08;Thread&#xff09;是两种不同的并发处理机制。它们各自有独特的特点和适用场景&#xff1a; 线程&#xff08;Thread&#xff09;&#xff1a; 线程是操作系统能够进行运算调度的最…...

部署flannel网络(master服务器执行)遇到错误

出现错误 “The connection to the server 192.168.0.23:6443 was refused - did you specify the right host or port?” 的原因通常是因为 Kubernetes API 服务器未能启动或无法访问。以下是一些可能的原因和解决方案&#xff1a; 解决方案 确认 Kubernetes API 服务器的状…...

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait&#xff0c;能根据用户提供的文本描述&#xff0c;快速生成既忠实于原图又能灵活调整的个性化人像&#xff0c;用户甚至可以通过简单的句子来描述多个不同的人物&#xff0c;而不需要一一指定每个人的位置。这种设计大大简化了用户的操作&#xff0c;提升了…...

使用托管竞价实例在Amazon SageMaker上运行机器学习训练

这是本系列文章的第二篇&#xff0c;旨在通过动手实践&#xff0c;帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章&#xff0c;大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧&#xff01; 介绍 什么是Amazon SageMaker …...

AIoT智能物联网平台定义

随着科技的飞速发展&#xff0c;我们正步入一个由智能设备和互联网络构成的新时代。AIoT&#xff0c;即人工智能物联网&#xff08;Artificial Intelligence of Things&#xff09;&#xff0c;是这个时代的标志性产物。本文旨在探讨AIoT智能物联网平台的定义、核心组件、应用场…...

微服务设计原则——高性能:存储设计

文章目录 1.读写分离2.分库分表3.动静分离4.冷热分离5.重写轻读6.数据异构参考文献 任何一个系统&#xff0c;从单机到分布式&#xff0c;从前端到后台&#xff0c;功能和逻辑各不相同&#xff0c;但干的只有两件事&#xff1a;读和写。而每个系统的业务特性可能都不一样&#…...

hbase-manager图形化界面的安装与配置

相关资料下载 夸克网盘分享 1、上传项目到linux上 解压&#xff1a; 切换到conf目录下&#xff1a;/opt/installs/hbase-manager-2.0.8-hbase-2.x/conf/ 2、修改数据库配置信息 application-druid.yml 3、创建hbase-manager数据库(注意字符集编码)&#xff0c;导入数据库脚本…...

STM32之继电器与震动传感器的使用,实现震动灯

在STM32的外设应用中&#xff0c;继电器扮演着重要的角色。继电器作为一种电控制器件&#xff0c;其主要作用是通过小电流控制大电流的通断&#xff0c;实现电路的自动控制和保护。具体来说&#xff0c;继电器在STM32外设中的作用可以归纳为以下几点&#xff1a; 电路隔离与保…...

RS232(旧协议)与RS485(新协议)

RS232: RS485: RS485和RS232是两种常见的串行通信标准&#xff0c;它们在通信距离、速度、拓扑结构等方面存在显著差异。以下是它们的主要区别&#xff1a; 1. 物理层接口 RS232: 使用单端信号传输&#xff0c;即信号通过一根信号线和一根公共地线&#xff08;GND&#xff09…...

android13顶部状态栏里面调节背光,不隐藏状态栏面板

总纲 android13 rom 开发总纲说明 目录 1.前言 2.代码分析 3.修改方法 4.编译运行 5.彩蛋 1.前言 android13顶部状态栏里面调节背光,这个时候状态栏面板会被隐藏掉,有些需求就需要不隐藏这个面板。 2.代码分析 查找亮度条属性 id/brightness_slider ./frameworks/b…...

Webrtc之SDP协议

SDP简介 SDP 最常用于 RTC 实时通话的协商过程&#xff0c;在 WebRTC 中&#xff0c;通信双方在连接阶段使用 SDP 来协商后续传输过程中使用的音视频编解码器(codec)、主机候选地址、网络传输协议等。 在实际的应用过程中&#xff0c;通信双方可以使用 HTTP、WebSocket、Data…...