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

瑞芯微RK3399固件急救指南:用upgrade_tool搞定系统崩溃后的快速还原

RK3399固件灾难恢复实战&#xff1a;从分区表重建到全系统还原 当一块搭载RK3399的开发板因固件损坏而变砖时&#xff0c;那种面对黑屏的无力感&#xff0c;相信每个嵌入式开发者都深有体会。去年我们产线就遭遇过因批量升级失败导致30台设备集体罢工的紧急状况&#xff0c;正…...

AQS深度探索:以ReentrantLock看Java并发编程的高效实现

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

从零搭建PointRCNN:Linux环境配置与3D检测可视化实战

1. 环境准备&#xff1a;从零搭建Linux深度学习工作站 第一次在Linux系统上配置深度学习环境时&#xff0c;我盯着命令行界面手足无措的样子还历历在目。现在回想起来&#xff0c;其实只要掌握几个关键步骤&#xff0c;就能快速搭建好PointRCNN所需的运行环境。我们以配备NVIDI…...

鸣鸣很忙上市后首份年报:营收662亿同比增长 经调整净利27亿

雷递网 雷建平 3月31日湖南鸣鸣很忙商业连锁股份有限公司&#xff08;简称&#xff1a;“鸣鸣很忙”&#xff0c;股份代号&#xff1a;1768&#xff09;今日发布截至2025年12月31日的财报。财报显示&#xff0c;鸣鸣很忙2025年营收为661.7亿元&#xff0c;较上年他同期的393.44…...

Pixel Language Portal 快速上手PyCharm:远程开发与模型调试配置详解

Pixel Language Portal 快速上手PyCharm&#xff1a;远程开发与模型调试配置详解 1. 为什么需要PyCharm远程开发 作为一名AI开发者&#xff0c;你可能经常遇到这样的困扰&#xff1a;本地电脑性能有限&#xff0c;跑不动大模型&#xff1b;服务器上开发又不够直观方便。PyCha…...

Phi-4-mini-reasoning企业级落地:金融风控规则推理引擎构建案例

Phi-4-mini-reasoning企业级落地&#xff1a;金融风控规则推理引擎构建案例 1. 项目背景与模型介绍 在金融风控领域&#xff0c;规则推理引擎是核心决策系统的重要组成部分。传统规则引擎往往面临维护成本高、灵活性差、难以应对复杂场景等问题。Phi-4-mini-reasoning作为一款…...

March7thAssistant:崩坏:星穹铁道企业级自动化解决方案

March7thAssistant&#xff1a;崩坏&#xff1a;星穹铁道企业级自动化解决方案 【免费下载链接】March7thAssistant 崩坏&#xff1a;星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 【核心价值定位】游戏工作室效率倍增引…...

**发散创新:策略即代码——用 Rust实现动态权限控制引擎**在现代软件系统中,权限管理早已不是简单的“用

发散创新&#xff1a;策略即代码——用 Rust 实现动态权限控制引擎 在现代软件系统中&#xff0c;权限管理早已不是简单的“用户-角色-资源”映射。越来越多的业务场景要求我们具备灵活、可扩展、易维护的权限决策机制。传统硬编码方式难以应对频繁变更的业务规则&#xff0c;而…...

Wan2.2-T2V-A5B实战:GitHub版本管理下的团队协作开发流程

Wan2.2-T2V-A5B实战&#xff1a;GitHub版本管理下的团队协作开发流程 你是不是也遇到过这样的场景&#xff1f;团队几个人一起开发一个基于Wan2.2-T2V-A5B的应用项目&#xff0c;代码改来改去&#xff0c;最后谁改了哪部分、为什么改、线上版本和本地版本哪个更新&#xff0c;…...

Qwen3.5-2B图文对话实战:上传实验数据图→自动识别坐标轴+趋势分析+结论建议

Qwen3.5-2B图文对话实战&#xff1a;上传实验数据图→自动识别坐标轴趋势分析结论建议 1. 引言&#xff1a;当AI遇见科研数据分析 作为一名科研工作者&#xff0c;你是否经常遇到这样的场景&#xff1a;实验室刚跑出一组数据&#xff0c;你迫不及待想分析趋势&#xff0c;却发…...