Qt从零开始(1)了解
文章目录
- 1. Qt技术介绍
- 2. 开发GUI的选择
- 3. 框架的介绍
- 4.Qt发展历程(简单介绍)
- 5. Qt支持的系统
- 6. Qt开发方式
- 7.Qt优点总结
简介:这篇文章简单介绍下Qt的相关知识与应用场景,随便看看,了解了解即可。如果介绍有误或者描述不当,还请各位看官包容包容,我也只是个小白,只是在学习的时候作总结,顺便与大家分享学习内容。学习Qt也只是为做嵌入式做铺垫
1. Qt技术介绍
其实IT行业核心岗位大多四种:开发
,测试,运维(管理机器),产品经理(非技术岗,提出需求),在开发中又细分为后端开发,前端开发
,算法工程师,游戏开发等等。而前端开发又分为网页前端开发(做网页),桌面应用开发
(做电脑上的应用程序),移动应用开发(做手机上的应用程序),而Qt
这个技术是用于进行 客户端开发
的。这里要弄清楚客户端与服务器之间的关系,简单来说客户端
就是直接和用户打交道的一端程序,比如QQ,微信客户端。那服务器
就是客户端背后的那个支持者,为客户端提供各种服务和资源共享,大部分的客户端程序是需要服务器做支撑的,不过也有一些程序是不需要服务器的,这样的程序有计算器,记事本等等,但同样是与客户打交道,也可以把这些程序称为 “客户端程序”
其实准确来说,
Qt是特指用来进行桌面应用开发(做电脑上的应用程序)的一项技术
,它是不能做网页开发的,但现在好像支持做移动应用开发(只不过用的比较少)。在进行客户端开发的时候必然离不开一项重要任务:那就是去编写与用户交互的界面
。而与用户交互的界面一般分为两种,一种是命令行/终端界面
,也就是TUI
,比如在Linux种是通过输入命令的方式去控制远端的服务器,它的特点是基于命令操作,门槛比较高,但效率也很高,所以基本是给程序猿使用的
。另一种就是图形化界面
,也就是GUI
,比如文件管理可以通过鼠标去增删文件,或者Windows桌面所展示的应用图标,那它的特点就是基于图形化操作,门槛低,但效率也低,所以基本上是给普通的电脑用户使用的
。总的来说,Qt是用来编写桌面的GUI程序的一套框架
2. 开发GUI的选择
在Windows编写GUI程序是有很多种的解决方案的,而Qt只是其中的一种选择,下面简单介绍下开发GUI的选择
- Windows API Windows提供原生API,开发起来非常原始和繁琐
- MFC 主要在90年代非常有影响力,但现在早已经不更新了
- Qt 在1991年左右诞生直到现在仍然在不断的推陈出新,更新版本,因此直到现在仍具有生命力
- Windows Forms 微软给C#量身定的一套开发GUI技术体系
- WPF 主要面向桌面应用程序,支持更丰富的桌面功能和自定义
- UMP 注重跨设备兼容性和现代应用体验,提供了许多现代化的API和功能
- Electron 本质上是把基于HTML这样的网页,打包成一个Windows上运行的 “客户端程序”,这个技术体系,最初是Github用来开发 “atom” 文本编辑器的,后来被微软的vscode给干没了,它有个比较大的缺点,那就是开发出来的程序运行效率低于上面介绍的一些原生开发的技术体系、
Qt虽然只是众多解决方案的一种,但仍然是非常能打的(在商业公司的产品中使用Qt是非常多的)那对应的就业岗位也是相比其它的解决方案也要更多,更为重要的是Qt有个非常大的优势,它支持跨平台,可以支持Windows,Linux,Mac
,可以称的上是六边形战士了,而我学习Qt主要是想为嵌入式系统做准备
3. 框架的介绍
Qt是一个跨平台的C++图形用户界面应用程序框架
,框架可以这么去理解,它是一群牛逼的大佬写出来,方便我这种新手小白程序员按照这个框架往里面填充内容,那写出来的代码也相对比较靠谱,我们知道如果写程序比较自由,灵活,约束较少,那就比较容易出错,所以框架相对于是在限制程序员的自由,同时也在规范程序员的写法
。这里要区分一下库和框架
,库和框架都相当于大佬已经写好可以给你拿去使用,而库是被程序员调用(程序员是主体),但框架则是程序员配合框架去完善框架中的细节(框架是主体)
对于java来说,它对于框架则更加的依赖(比如Spring…)java中的框架它是非常有代表性的,相当于一统天下,大家都愿意去用。而相对于C++来说,框架也是很有必要的。但C++它的生态是割裂的,分散的,每个开源社区和大厂有自己使用和设计的框架,各自为政没有一个共同使用的框架。因此相比于Qt这种,
在C++中能够被大家认可共同使用的框架足以能看出它的实力与适应性
4.Qt发展历程(简单介绍)
在1991年,计算机中诞生了很多神奇的东西,比如Qt,Python,Vim,OpenG,Linux。而诺基亚这个手机在那个年代基本上是一家独大,它开发出了塞班系统(最早的智能手机系统了)那诺基亚就主推 Qt 来作为开发塞班系统应用程序的解决方案。但是万万没想到,一夜之间,诺基亚就凉了。诺基亚没了之后,Qt又卖给了另一个公司Digia(迪迦)
2007年,乔布斯发布苹果手机----标致移动互联网时代开启了!!
2012 年左右, IPhone4 成为一代经典.小米和华为也入场智能手机,安卓系统大规模崛起
诺基亚最后的反扑,诺基亚和微软强强联合推出了一代新的智能手机,windows phone----撸没系列,发布没多久,果然就把自己给撸没了。主要原因还是生态太差,别人能下载的软件它却不能下载
5. Qt支持的系统
- Windows(各个版本)
- Linux(各种发行版)
- Mac系统
- 嵌入式系统
Linux中的KDE桌面就是基于Qt构建的(GNOME基于GTK构建),但Linux主要是给服务器使用的,而服务器它是不需要图形化界面的,基本上是通过指令去操作,效率高,门槛也比较高。大部分人是使用Windows桌面,也有极少部分人使用Linux作为桌面(不过使用过程中还是存在很多问题的)
嵌入式系统也是Qt实际开发的一个主战场,比如日常使用的洗衣机,投影仪,空调等等。这些设备内部也有计算机,但硬件配置就不需要很高(低配置,低成本),不过有些嵌入式系统也是需要图形化界面的程序去运行。这个时候Qt就能发挥左右了,尤其是在一些工业设备自动化生产上
6. Qt开发方式
在选择下载程序时,并不意味着下载最新版本就越有优势,可能最新版本有更加独特的功能和体验,但随之而来的也有新存在的问题没有解决。同样在软件开发中,并非是越新就越好在进行商业开发的时候,相比之下,引入新的特性,不如优先确保不引入严重的问题
商业许可:你想使用Qt开发一个程序,就可以向Digia这个公司购买商业许可证(花钱),主要买的是技术支持,哪里出了问题就可以直接找Digia公司,可以这么说商业许可提供了更多的功能和服务。比如,Redhat (收费 Linux 发行版)比如,Oracle(收费的数据库)
开源许可:使用Qt开发一个程序,不必花钱,直接白嫖
7.Qt优点总结
● 跨平台,几乎支持所有的平台;
● 接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
● 一定程度上简化了内存回收机制;(半自动的垃圾回收,能够简化内存释放,也能够尽可能小的影响程序的运行效率
)
● 开发效率高,能够快速的构建应用程序。
● 有很好的社区氛围,市场份额在缓慢上升。
● 可以进行嵌入式开发。
相关文章:
Qt从零开始(1)了解
文章目录 1. Qt技术介绍2. 开发GUI的选择3. 框架的介绍4.Qt发展历程(简单介绍)5. Qt支持的系统6. Qt开发方式7.Qt优点总结 简介:这篇文章简单介绍下Qt的相关知识与应用场景,随便看看,了解了解即可。如果介绍有误或者描…...
当元数据遇见 AI 运维:智能诊断企业数据资产健康度
在数字化浪潮席卷全球的当下,企业数据资产规模呈指数级增长,然而传统数据监控方式却逐渐暴露出诸多弊端。想象一下,在某头部电商的晨会上,数据工程师小王正经历职业生涯最尴尬的时刻:“昨天促销活动的 UV 数据为什么比…...
关于OCP认证:有Oracle和MySQL两种
认证针对的数据库系统 MySQL OCP:是 Oracle 公司针对 MySQL 数据库管理员和开发者设计的认证,主要验证持证者在 MySQL 数据库管理、优化及安全等方面的技术能力。MySQL 是开源的关系数据库管理系统,以其简单、高性能和灵活性在中小型企业及开…...
Macos m系列芯片环境下python3安装mysqlclient系列问题
最近学习python3,在安装mysqlclient的时候遇到了一些问题,直接使用哦pip install mysqlclient 直接报错了,记录一下解决方案。 环境信息 设备:Macbook Pro m1 系统:macos Sequoia 15.3.2 最终成功的python版本…...
《代码整洁之道》第7章 错误处理 - 笔记
得墨忒耳定律 不要链式调用, 如 a.getB().getC().doSomething()。 直接获取对象调用方法 数据传输对象(DTOs) DTO (Data Transfer Object): 数据传输对象。这是一种典型的数据结构。 里面没有任何业务逻辑代码。它的唯一作用就…...
java-mybatis01
对象/关系映射ORM ORM完成面向对象的编程语言DAO关系数据库的映射后,开发人员可以利用面向对象设计语言的建议易用性,也可利用关系数据库的技术优势。 ORM把关系数据库包装成面向对象的模型,采用ORM框架后,应用程序不再直接访问底…...
单片机之间的双向通信
具体功能实现 甲单片机通过按键可以控制乙单片机的LED灯,而乙单片机通过可以让连接甲单片机的数码管数字自增加一。 定时器资源 3个定时器 中断系统 执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,cpu暂时中止现行程序&…...
量子纠缠式架构:当微服务同时存在于所有节点时,CAP定理是否依然成立?
一、CAP定理的经典困境 1. 传统分布式系统的三维束缚 经典权衡案例: 系统类型选择代价银行核心系统CP故障时拒绝服务社交网络AP短暂数据不一致物联网平台CA网络中断即崩溃 二、量子纠缠的降维打击 1. 量子微服务的超距同步 # 量子纠缠服务示例(Qiski…...
使用rsync和inotidy-tools来进行实时备份文件夹数据
在工作中遇到这个这么个需求,就是我们有一个samba的文件共享服务器,里面存了很多文件,然后我想实时备份这个samba共享文件的。 1、概述 只需要在源服务器上操作,并在源服务器上安装好rsync和inotidy-tools,目标服务器…...
Spring AI 实现智能对话
1. 实现效果 2. Spring Boot 3 后端 2.1 pom.xml <!-- 管理包依赖。通过 Spring AI 的 BOM 文件统一管理所有 Spring AI 相关依赖的版本,确保版本一致性,减少冲突 --><dependencyManagement><dependencies><!-- Spring AI -->…...
2025 网络安全技术深水区探索:从 “攻防对抗” 到 “数字韧性” 的范式跃迁
引言:当攻击成本趋近于零,防御逻辑必须重构 2025 年,网络安全领域正经历三重根本性变革: 攻击者门槛坍缩:生成式 AI 将网络钓鱼开发效率提升 300%,勒索软件即服务(RaaS)订阅用户突破…...
学习笔记—双指针算法—移动零
双指针算法 移动零 283. 移动零 - 力扣(LeetCode) 题目描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进…...
计算机网络全栈精讲:从 TCP/UDP 原理到 Socket 编程与 HTTP 协议实战(含代码实现)
计算机网络作为现代信息技术的基石,支撑着互联网、物联网、云计算等众多领域的发展。无论是前端开发者、后端工程师,还是运维人员,深入理解计算机网络原理都至关重要。本文将从网络分层模型出发,逐步深入讲解 TCP/UDP 协议、Socke…...
IP地址如何切换到国内别的省份?一步步指导
使用换IP工具的主要目的是通过更换设备的公网IP地址来满足特定需求,例如绕过限制、保护隐私或完成特定任务。以下是常见的应用场景和原因: 一、ip应用场景 1. 绕过IP限制 访问地域限制内容:某些网站或服务(如游戏、社交平台 &am…...
c++流对象
核心概念回顾: C 的流库 (<iostream>, <fstream>, <sstream>) 提供了一种统一的方式来处理输入和输出,无论数据是来自键盘、文件还是内存中的字符串。它们都基于 std::istream (输入流基类) 和 std::ostream (输出流基类),…...
华为IP(5)
交换机的堆叠与集群 堆叠和集群指的是同一件事 前言: 随着企业的发展,企业网络的规模越来越大,这对企业网络提出了更高的要求:更高的可靠性、更低的故障恢复时间、设备更加易于管理等。 传统的园区网高可靠性技术出现故障时很难做到毫秒级…...
零信任架构下的等保 2.0 与密评密改双合规
随着《网络安全等级保护2.0》和《商用密码应用安全性评估》的深入实施,企业面临双重合规压力:既要满足等保2.0对“主动防御”和“动态防护”的要求,又要通过密评密改强化密码技术的合规性。传统安全架构依赖边界防护和静态密码策略࿰…...
华为 MRAG:多模态检索增强生成技术论文阅读
GitHub项目链接:https://github.com/PanguIR/MRAGSurvey 总览 多模态检索增强生成(MRAG)通过将文本、图像、视频等多模态数据整合到检索与生成过程中,显著提升了多模态大语言模型(MLLM)的性能。传统检索增…...
文字光影扫过动效
列子1 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>光影扫过文字动效</title><styl…...
SpringBoot配置RestTemplate并理解单例模式详解
在日常开发中,RestTemplate 是一个非常常用的工具,用来发起HTTP请求。今天我们通过一个小例子,不仅学习如何在SpringBoot中配置RestTemplate,还会深入理解单例模式在Spring中的实际应用。 1. 示例代码 我们首先来看一个基础的配置…...
计算机网络应用层(5)-- P2P文件分发视频流和内容分发网
💓个人主页:mooridy 💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第五、六节知识梳理 关注我&…...
C++ TCP通信原理与实现
C 中 TCP 通信的原理基于 TCP/IP 协议栈的实现,以下是核心原理和关键步骤的详细说明: 一、TCP 通信核心原理 面向连接 通信双方需通过 三次握手 建立可靠连接,确保通信通道稳定。通过 四次挥手 断开连接,保证数据完整性。 可靠传…...
计算机网络-运输层(1)
计算机网络-运输层(1) 文章目录 计算机网络-运输层(1)5.1 运输层概述5.2 运输层端口号、复用与分用端口号基本概念端口号特性端口号分类重要说明 5.3 UDP与TCP协议对比关键区别说明 5.1 运输层概述 计算机网络体系结构中的物理层、数据链路层以及网络层共同解决了主机通过异构…...
学习spark-streaming收获
1.流处理的核心概念 •实时 vs微批处理:理解了 Spark Streaming 的微批处理(Micro-Batch)模型,将流数据切分为小批次(如1秒间隔)进行处理,与真正的流处理(如Flink)的区…...
蓝桥杯 14. 奇怪的数列
奇怪的数列 原题目链接 题目描述 从 X 星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 ⋯⋯YY 博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行 “读出…...
前端高频面试题day2
如何在vue3中使用defineAsyncComponent实现异步组件加载 在 Vue 3 中,使用 defineAsyncComponent 实现异步组件加载的步骤如下: 引入方法:从 Vue 中导入 defineAsyncComponent。定义异步组件:通过 defineAsyncComponent 包装一个…...
Linux系统之设置开机启动运行桌面环境
Linux 开机运行级别介绍与 Ubuntu 桌面环境配置指南 一、Linux 开机运行级别(Runlevel) 在传统的 Linux 系统(如 SysV init 初始化系统)中,运行级别定义了系统启动时加载的服务和资源。常见的运行级别如下: 运行级别模式用途0Halt(停机模式)关闭系统1Single User Mode…...
Python PyAutoGUI库【GUI 自动化库】深度解析与实战指南
一、核心工作原理 底层驱动机制: 通过操作系统原生API模拟输入使用ctypes库调用Windows API/Mac Cocoa/Xlib屏幕操作依赖Pillow库进行图像处理 事件模拟流程: #mermaid-svg-1CGDRNzFNEffhvSa {font-family:"trebuchet ms",verdana,arial,sans…...
【MobaXterm】win10下载v25.1安装流程
【下载地址】 官网: https://mobaxterm.mobatek.net/ 下载安装版,解压使用更快一些 【v20.0中文安装包】 夸克网盘:https://pan.quark.cn/s/2ad5b59e6d8e#/list/share 对应的指导教程: MobaXterm中文版安装使用教程-附安装包…...
2025.4.22 JavaScript 常用事件学习笔记
一、事件概述 JavaScript 事件是指在用户与网页交互或网页状态发生变化时所触发的操作。通过使用事件,可以为网页添加丰富的动态功能,实现用户与页面之间的互动,让网页不再只是静态的展示内容。 二、常见鼠标事件 click 事件 简介 …...
Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现
Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现 文章目录 需求:参考资料架构图了解Camera相关专栏零散知识了解部分相机源码参考,学习API使用,梳理流程,偏应用层Camera2 系统相关 修改文件-修改方案修改文件:修改…...
Linux:基础IO 文件系统
Linux:基础IO && 文件系统 一、系统IO(一)系统文件操作接口1、open2、write3、read (二)文件描述符1、概念2、标准输入、标准输出、标准错误 (三)dup系统调用(重定向原理) 二…...
近期有哪些断链危机?如何提升供应链风险管理能力?
全球供应链格局正经历深刻变革,其网络架构愈发复杂,涉及多国企业主体且涵盖多个节点与复杂环节,管理难度显著增大。从原材料采购到终端交付,运输、仓储、加工等任一环节均存在潜在风险,单一环节效率滞后易引发系统性连…...
知识科普|褪黑素的发展历程及应用研究进展
睡眠作为维持人体健康的重要生理机制,其节律性受到精密调控。在昼夜节律系统的调控下,人类普遍遵循周期性单次睡眠模式,这一过程涉及复杂的神经-体液调控网络。其中神经元活动、神经递质传导、激素分泌及遗传调控机制共同作用于睡眠觉醒系统&…...
企业如何构建一个全面的Web安全防护体系
企业如何构建一个全面的Web安全防护体系 企业构建全面的Web安全防护体系需融合战略规划、技术防御、持续运营和风险治理四大维度,以下是基于行业最佳实践的系统化方案: 一、顶层设计:治理架构与安全战略 战略规划与合规驱动 制定网络安全愿…...
T8332FN凯钰LED驱动芯片多拓扑车规级AEC-Q100
T8332FN是一款支持多拓扑结构的恒流LED驱动控制芯片,适用于汽车照明及高功率LED应用,具备宽电压输入、高精度调光及多重保护功能。 核心特性 - 输入与拓扑:支持5-60V宽电压输入,适配Boost、Buck、Buck-Boost、SEPIC四种拓扑结构&…...
Redis一些小记录
Redis一些小记录 SpringData Redis:RedisTemplate配置与数据操作 操作String类型数据 String是Redis中最基本的数据类型,可以存储字符串、整数或浮点数。RedisTemplate提供了ValueOperations接口来操作String类型的数据,支持设置值、获取值、…...
Win10安装 P104-100 驱动
安装完之后总结一下, 之前做了不少功课, 在网上搜了很多教程, 视频的文字的, 但是很多已经比较陈旧了. 最后发现的这个 GitHub 项目 NVIDIA-patcher 是最有用的, 因为这是现在这些魔改驱动的来源. NVIDIA-patcher 仓库地址: https://github.com/dartraiden/NVIDIA-patcher 安…...
Android开机动画资源包制作(测试使用)
开机动画资源包需要采用仅存储的方式进行压缩,不能使用压缩软件直接压缩生成。 如果是系统开发人员,可以在源码目录中,采用bootanim程序提供的制作方式进行,下面可供测试人员自行制作。 制作流程 1)基于设备中已有开…...
PWN基础-利用格式化字符串漏洞泄露canary结合栈溢出getshell
测试源码: #include<stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[0x20];read(0, str, 0x50);printf(str);read(0, str, 0x50); } int main() {func();return 0; } 编译,开启 canary 保护,关闭 p…...
Kafka HA集群配置搭建与SpringBoot使用示例总结
Kafka HA集群配置搭建与SpringBoot使用示例总结 一、Kafka高可用(HA)集群搭建 1. 环境准备 至少3台服务器(推荐奇数台,如3、5、7)已安装Java环境(JDK 1.8)下载Kafka二进制包(如kafka_2.13-3.2.1.tgz&…...
MSO-Player:基于vlc的Unity直播流播放器,支持主流RTSP、RTMP、HTTP等常见格式
MSO-Player 基于libVLC的Unity视频播放解决方案 支持2D视频和360度全景视频播放的Unity插件 📑 目录 🎥 MSO-Player 📋 功能概述🚀 快速入门📚 关键组件📝 使用案例🔌 依赖项📋 注意…...
97A6-ASEMI无人机专用功率器件97A6
编辑:ll 97A6-ASEMI无人机专用功率器件97A6 型号:97A6 品牌:ASEMI 封装:SOT-23 批号:最新 引脚数量:3 特性:双向可控硅 工作温度:-40℃~150℃ 97A6双向可控硅:…...
body Param Query 三个 不同的入参 分别是什么意思 在前端 要怎么传 这三种不同的参数
在 NestJS 中,Body()、Param() 和 Query() 用于处理不同类型的请求参数。以下是它们的含义及前端传递方式: Body():请求体参数 • 含义:用于获取请求体中的数据(如 POST/PUT 请求中提交的 JSON、表单数据等)…...
生成式人工智能认证(GAI认证)含金量怎么样?
当生成式人工智能(Generative AI)的浪潮以摧枯拉朽之势重塑职业版图时,一个尖锐的问题正悬在无数人的心头:在技术迭代比眨眼更快的时代,如何证明自己具备驾驭AI的核心能力? 这场认知革命的背后,一张认证证书的价值早已超越了纸面——它既是个人能力的“信用背书”,也是…...
环境DNA宏条形码技术,鱼类检测引物如何选择?
环境DNA(eDNA)宏条形码技术在鱼类多样性调查研究中的优势明显,相比于传统调查方式,eDNA宏条形码技术灵敏度更高,能够更好地揭示鱼类的丰富度,并且具有高时效性。然而,在使用这个技术的过程中&am…...
Scala集合操作与WordCount案例实战总结
集合计算简单函数 1、说明 (1)求和 (2)求乘积 (3)最大值 (4)最小值 (5)排序 2、案例实操 object demo29{ def main(args: Array[String]): Unit { val…...
Spark-Streaming核心编程(四)总结
有状态转化操作 - UpdateStateByKey 功能描述 UpdateStateByKey原语用于在DStream中跨批次维护状态,例如流计算中的累加wordcount。 它允许对一个状态变量进行访问和更新,适用于键值对形式的DStream。 工作原理 给定一个由(键,事…...
关系型数据库PostgreSQL for Mac 保姆级使用教程
第一部分:安装PostgreSQL 方法一:使用Postgres.app(最简单) 访问 Postgres.app官网 下载最新版本,将 Postgres.app 移动到 “Applications” 文件夹。 双击Postgres.app打开应用,点击"Initialize&q…...
新增 29 个专业,科技成为关键赛道!
近日,教育部正式发布《普通高等学校本科专业目录(2025年)》,新增 29 个本科专业,包括区域国别学、碳中和科学与工程、海洋科学与技术、健康与医疗保障、智能分子工程、医疗器械与装备工程、时空信息工程、国际邮轮管理…...