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

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

路由基础-路由表

本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中&#xff0c;往往存在多个不同的IP网段&#xff0c;数据在不同的IP网段之间交互是需要借助三层设备的&#xff0c;这些设备具备路由能力&#xff0c;能够实现数据的跨网段转发。 路由是数据通信网络中最基…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...