当前位置: 首页 > 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; 线程是操作系统能够进行运算调度的最…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...