[Qt] Qt介绍 | 搭建SDK

news2025/1/4 9:37:07

目录

1. Qt 简介

什么是 Qt?

1.1 引入

1.2 GUI

1.3 Qt 介绍

2. Qt 发展史

3. Qt 支持的平台

4. Qt 版本信息

5. Qt 的优点

6. Qt 应用场景

7. Qt 成功案例

8. Qt 发展前景及就业分析

二. Qt 开发环境搭建

1. 开发工具概述

2.Qt SDK 安装

3.使用


1. Qt 简介

什么是 Qt?

Qt 是一个跨平台的 C++ 图形用户界面应用程序框架

  • 它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。
  • 它是完全面向对象的,很容易扩展。
  • Qt 为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用 C++ 语言进行高级开发。

图形用户界面(GUI):指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。

1.1 引入

技术之间,具有非常强关联性

Qt 这个技术,用于进行“客户端开发”,属于前端开发中的“桌面运用开发”(电脑上的应用程序)

前置知识

  • 客户端:直接和用户打交道的这一端的程序(steam,chrome......)
  • 服务器:站在客户端背后的,提供支撑
  • 虽然大部分的客户端程序,需要服务器。但有些程序不需要服务器,例如画图板...但同样也是直接和用户打交道,也可以称为“客户端程序”

介绍

  • Qt 无法开发网页前端,也不能开发移动应用(目前支持了,但还没什么人用...
  • 客户端开发的主要任务:编写和用户交互的页面

和用户交互的界面,两种典型风格:

  • 命令行界面(黑框框)=>TUI
  • 图形化界面=>GUI

Qt 是用来编写 桌面的 GUI 程序的一套框架


1.2 GUI

windows 下的 GUI 开发,基于 C/C++

  1. 提供的原生 API,开发起来非常原始,也非常繁琐
  2. MFC 上个世纪 90 年代,影响力还是非常深远的~~同时还有 VC6.0
  3. 面向对象的对 API 进行了封装,Qt(1991 年)诞生,和 MFC 不同,MFC 已经寄了,Qt 还在推陈出新,更新版本,至今任然非常有生命力
  • 还有 GTK,WxWidget...
  • 后来微软有了自己的语言,C#(sharp),量身定做了一套开发 GUI 技术体系~例如 WPF,UWP

开源社区推出了 Electron,本质是把基于 HTML 这样的网页,打包成一个 windows 上运行的客户端程序~

背景:Electron 这个技术体系,最初是用来开发“atom”文本编辑器的~Github 开发的,后来 atom 就寄了(因为微软推出了 vscode)

  • 比较大的缺点:运行效率 还是比较低..

1.3 Qt 介绍

Qt 虽然只是上述解决方案中的其中一个,但用的公司还是挺多的

优点:能够跨平台~~(支持 Windows,macos,Linux)

  • Qt 是一个 跨平台的 C++图形用户界面应用程序框架
  • 框架:大佬开发出来,给普通程序员方便用的,限制程序员代码的自由~(就像围棋照着棋谱下,至少不会太差),在关键节点添加自己的代码

框架 vs 库

库和框架都是属于,大佬把一些代码写好了,让你去使用

不同点

  • 库:被程序员调用(程序员是主体)
  • 框架:则是占主体~程序员配合框架,完善填充框架中留出的一些细节

Java 对于框架,就更加依赖~Spring

编写 C++代码,框架当然也很重要,但 C++的生态是割裂的,离散的,不像 隔壁 Java,存在一些巨无霸社区,一统天下,C++不同的开源社区/大厂,各自有各自的框架,各自为政~

相比之下,Qt 这种,能够被大家共同认可的框架,在整个 C++生态中是不多见的


2. Qt 发展史

  • 1991 年,在计算机,诞生了很多神奇的东西

比如 Qt,Python,Vim,OpenGL,Linux...

Qt 的发展

  • 1991年:Qt最早由奇趣科技(Trolltech)开发;
  • 1996年:进入商业领域,并成为目前流行的Linux桌面环境KDE的基础;
  • 2008年:奇趣科技被诺基亚公司收购,Qt成为诺基亚旗下的编程工具;

诺基亚主推 Qt 来作为开发塞班系统应用程序的解决方案(最早的智能手机系统了)

2007 年,乔布斯发布苹果手机~标志移动互联网时代开启了

2012 年左右,iPhone4 称为一代经典,小米和华为也入场智能手机,安卓系统大规模崛起

诺基亚最后的反扑:和微软推出了 windows phone~撸没系列,没多久就没了

  • 2012年:Qt被Digia公司收购;
  • 2014年4月:跨平台的集成开发环境Qt Creator 3.1.0发布;同年5月20日,Qt 5.3正式版发布,至此Qt实现了对iOS、Android、Embedded等各平台的全面支持。

3. Qt 支持的平台

  • Qt 支持的系统
  1. windows(各个版本)
  2. Linux,尤其是 Linux 中的 KDE 桌面基于 Qt 构建的

TUI vs GUI

Linux 主要是给服务器使用,服务器不需要图形界面

TUI,基于命令操作,门槛更高,效率也更高

GUI 基于图形化操作,门槛低,效率也低

      3.Mac 系统

      4.嵌入式系统

日常生活中冰箱,洗衣机,路由器...这些设备内部也有计算机,这种里面的硬件配置就不需要很高了,其中的图形化界面程序设计使用 Qt/安卓


4. Qt 版本信息

目前最新的版本是 Qt 6。但是,相对来说,Qt 6 和 Qt 5 之间的核心功能区别不大,并且企业中仍然有大量的项目在使用 Qt 5。因此后面主要用 Qt 5 来进行介绍

软件开发中,并不是越新越好,在商业软件开发中,引入新的性能,不如优先确保不引入严重的问题~

Qt 提供 商业许可 和 开源许可 两种授权方式。

  • 商业许可:你想使用 Qt 开发一个程序,就可以向迪迦这个公司购买商业许可证(花钱,主要买的是技术支持!商业许可提供了更多的功能和服务)

比如:Redhat(收费 Linux 发行版)

比如,Oracle(收费的数据库)

  • 开源许可:想开发一个程序,不必花钱,直接白嫖

5. Qt 的优点

  • 跨平台支持广泛。
  • 接口简单易学。
  • 内存管理机制简化。
  • 开发效率高。
  • 社区活跃,市场份额增长。
  • 支持嵌入式开发。

6. Qt 应用场景

  • 桌面应用程序、移动应用程序、嵌入式系统等。

7. Qt 成功案例

(1)Linux 桌面环境 KDE

Linux 桌面环境中存在好几套桌面环境:

  • GNOME(基于 GTK 创建)
  • KDE(基于 Qt 创建)

(2)WPS Office 办公软件

(3)Skype 网络电话

Skype 是一款即时通讯软件,其具备 IM 所需的功能,比如视频聊天、多人语音会议、多人聊天、传送文件、文字聊天等功能。

它可以高清晰与其他用户语音对话,也可以拨打国内国际电话,无论固定电话、手机均可直接拨打,并且可以实现呼叫转移、短信发送等功能。

(4)Google Earth 谷歌地图

(5)VLC 多媒体播放器

(6)VirtualBox 虚拟机软件(VirtualBox 号称是最强的免费虚拟机软件)

8. Qt 发展前景及就业分析

  • 行业发展方向包括 物联网、自动驾驶、智能交通、游戏开发等领域。
  • 就业方面提供了广泛的职位选择和较高的薪资水平。
  • 再去学安卓,ios 等图形化开发也会更加的容易上手

二. Qt 开发环境搭建

1. 开发工具概述

我们知道开发环境需要安装三个部分

1.C++编译器

2.Qt SDK(软件开发工具包)

3 . Qt 的集成开发环境(IDE)

主要开发环境有 Qt Creator(推荐)、Visual Studio 和 Eclipse。

  • Qt 官方提供的 Qt Creator(最容易入门,比较方便,但有些 bug 影响使用体验)
  • VS(功能更强,但需要额外的配置更多,安装 Qt 插件,把 Qt SDK 使用 VS 的编译器重新编译)
  • Eclipse(并非只是 Jave IDE,可以搭配

说是安装三个东西,其实只要安装一个 Qt SDK,另外两个也就都有了


2.Qt SDK 安装

但凡需要下载安装一个程序,首选官方网站!!

Qt 下载官⽹:http://download.qt.io/archive/qt/国内清华源:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/ 进⼊官⽹,按如下图⽰进⾏相应的系统版本下载即可。

选择需要下载的版本;

安装软件的时候,所在目录,不要中文,特殊符号

给装好的 Qt 配置一下环境变量

要添加的目录:包含动态库和 exe 的

❗ 不要从搜索框搜索“环境变量”进入环境变量设置,直接搜索的话是使用用户(user)身份进入的,所以只能设置用户环境变量

要从 控制面板--系统和安全--系统--高级系统设置--环境变量 进入环境变量设置,这样的路径是使用了管理员身份进入的,就可以设置系统环境变量了

为什么要设置环境变量?

  • 环境变量 是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序将要用到的信息。
  • 在Windows上设置Qt的环境变量是为了能够在命令行或者其他应用程序中直接访问Qt相关的命令和工具。

环境变量,也可以理解成一种简单的“进程间通信”机制,方便程序运行时,找到位置

之后我们在搜索菜单中输入 Qt,就可以看到如下 4 个文件:

对于官方文档:读英文文档,很重要,一步步静下心来


3.使用

  1. Qt 会借助你编写的代码,生成代码

2. 填写类信息设置界面

使用 Qt Creator 创建项目会自动生成一些代码出来,生成的代码就包含一个类,此处就是要选择这个自动生成的类的父类是什么。

⭕对于基类的选择,目前有三种基类:

💡这里生成的文件名是和类名关联的,这样的关联并非是强制的(但推荐这么做)。

上述三个类之间的关系如下图:

💡这个 Form file 非常关键,Qt 中创建图形化界面的程序有两种方式:

  • 直接通过 C++ 代码的方式创建界面。
  • 通过 Form file,以图形化的方式来生成界面。此时就可以使用 Qt Designer 或者直接使用 Qt Creator 来编辑这个 ui 文件,从而以图形化的方式快速方便的生成图像界面。

Qt 内置的类 都是以 Q 为前缀开头的。

3. 选择版本控制系统

点击 “下⼀步” 进入项目管理界面。在项目管理界面可以设置作为子项目,以及加⼊版本控制系统管理。这两个功能暂时用不到,都用默认的 <None> ,然后点击 “完成”。

sum:前期 我们先选择使用 Qwight,其余创建一个新的 qt 项目,就是一路 next 就好啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】机器学习的基本分类-自监督学习-对比学习(Contrastive Learning)

对比学习是一种自监督学习方法&#xff0c;其目标是学习数据的表征&#xff08;representation&#xff09;&#xff0c;使得在表征空间中&#xff0c;相似的样本距离更近&#xff0c;不相似的样本距离更远。通过设计对比损失函数&#xff08;Contrastive Loss&#xff09;&…

xterm + vue3 + websocket 终端界面

xterm.js 下载插件 // xterm npm install --save xterm// xterm-addon-fit 使终端适应包含元素 npm install --save xterm-addon-fit// xterm-addon-attach 通过websocket附加到运行中的服务器进程 npm install --save xterm-addon-attach <template><div :…

记一次护网通过外网弱口令一路到内网

视频教程在我主页简介或专栏里 目录&#xff1a; 资产收集 前期打点 突破 完结 又是年底护网季&#xff0c;地市护网有玄机&#xff0c;一路磕磕又绊绊&#xff0c;终是不负领导盼。 扯远了-_-!!&#xff0c;年底来了一个地市级护网&#xff0c;开头挺顺利的&#xff0c…

XIAO ESP32 S3网络摄像头——2视频获取

本文主要是使用XIAO Esp32 S3制作网络摄像头的第2步,获取摄像头图像。 1、效果如下: 2、所需硬件 3、代码实现 3.1硬件代码: #include "WiFi.h" #include "WiFiClient.h" #include "esp_camera.h" #include "camera_pins.h"// 设…

uniapp:微信小程序文本长按无法出现复制菜单

一、问题描述 在集成腾讯TUI后&#xff0c;为了能让聊天文本可以复制&#xff0c;对消息组件的样式进行修改&#xff0c;主要是移除下面的user-select属性限制&#xff1a; user-select: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms…

2025:OpenAI的“七十二变”?

朋友们&#xff0c;准备好迎接AI的狂欢了吗&#xff1f;&#x1f680; 是不是跟我一样&#xff0c;每天醒来的第一件事就是看看AI领域又有什么新动向&#xff1f; 尤其是那个名字如雷贯耳的 OpenAI&#xff0c;简直就是AI界的弄潮儿&#xff0c;一举一动都牵动着我们这些“AI发…

无人机频射信号检测数据集,平均正确识别率在94.3%,支持yolo,coco json,pasical voc xml格式的标注,364张原始图片

无人机频射信号检测数据集&#xff0c;平均正确识别率在94.3&#xff05;&#xff0c;支持yolo&#xff0c;coco json&#xff0c;pasical voc xml格式的标注&#xff0c;364张原始图片 可识别下面的信号&#xff1a; 图像传输信号LFST &#xff08;Image_Transmission_sign…

柱状图中最大的矩形 - 困难

************* c topic: 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; ************* chenck the topic first: Think about the topics I have done before. the rains project comes:盛最多水的容器 - 中等难度-CSDN博客https://blog.csdn.net/ElseWhe…

第17篇 使用数码管实现计数器___ARM汇编语言程序<四>

Q&#xff1a;如何使用定时器实现数码管循环计数器&#xff1f; A&#xff1a;DE1-SoC_Computer系统有许多硬件定时器&#xff0c;本次实验使用A9 Private Timer定时器实现延时&#xff1a;定时器首先向Load寄存器写入计数值&#xff0c;然后向Control寄存器中的使能位E写1来启…

SSM 进销存系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

1、什么是Ceph Ceph是一种开源、分布式存储系统&#xff0c;旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的&#xff0c;使得用户可以在无需特定硬件支持的前提下&#xff0c;通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计…

【Rust自学】8.4. String类型 Pt.2:字节、标量值、字形簇以及字符串的各类操作

8.4.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构&#xff0c;这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的&#xff0c;这也意味着这些集合的数据大小无需在编…

svn分支相关操作(小乌龟操作版)

在开发工作中进行分支开发&#xff0c;涉及新建分支&#xff0c;分支切换&#xff0c;合并分支等 新建远程分支 右键选择branch/tagert按钮 命名分支的路径名称 点击确定后远程分支就会生成一个当时命名的文件夹&#xff08;开发分支&#xff09; 分支切换 一般在开发阶段&a…

24年收尾之作------动态规划<六> 子序列问题(含对应LeetcodeOJ题)

目录 引例 经典LeetCode OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门 LeetCode<300>最长递增子序列 画图分析: 使用动态规划解决 1.状态表示 dp[i]表示以i位置元素为结尾的子序列中&#xff0c;最长递增子序列的长度 2.…

蓝牙|软件 Qualcomm S7 Sound Platform开发系列之初级入门指南

本文适用范围 ADK24.2~ 问题/功能描述 S7开发环境搭建与编译介绍 实现方案 本文介绍适用于windows平台Application部分,audio ss的说明会在下一篇文章在做说明,Linux平台如果不进行AI算法的开发,个人认知是没有必要配置,若是做服务器倒是不错的选择.因为编译完成后烧录调试还…

Redis - 4 ( 9000 字 Redis 入门级教程 )

一&#xff1a; Zset 有序集合 1.1 常用命令 有序集合在 Redis 数据结构中相较于字符串、列表、哈希和集合稍显陌生。它继承了集合中元素不允许重复的特点&#xff0c;但与集合不同的是&#xff0c;有序集合的每个元素都关联一个唯一的浮点分数&#xff08;score&#xff09;…

ubuntu 使用samba与windows共享文件[注意权限配置]

在Ubuntu上使用Samba服务与Windows系统共享文件&#xff0c;需要正确配置Samba服务以及相应的权限。以下是详细的步骤&#xff1a; 安装Samba 首先&#xff0c;确保你的Ubuntu系统上安装了Samba服务。 sudo apt update sudo apt install samba配置Samba 安装完成后&#xff0c…

打印进度条

文章目录 1.Python语言实现(1)黑白色(2)彩色&#xff1a;蓝色 2.C语言实现(1)黑白颜色(2)彩色版&#xff1a;红绿色 1.Python语言实现 (1)黑白色 import sys import timedef progress_bar(percentage, width50):"""打印进度条:param percentage: 当前进度百分比…

深度解析 LDA 与聚类结合的文本主题分析实战

🌟作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~🍊个人主页:小高要坚强的博客🍓当前专栏:《Python之文本分析》🍎本文内容:深度解析 LDA 与聚类结合的文本主题分析实战🌸作者“三要”格言:要坚强、要努力、要学习 目录 引言 技术框架…

点跟踪基准最早的论文学习解读:TAP-Vid: A Benchmark for Tracking Any Point in a Video—前置基础

TAP-Vid: A Benchmark for Tracking Any Point in a Video— TAP-Vid&#xff1a;跟踪视频中任意点的基准、 学习这一篇文章的本来的目的是为了学习一下TAP-NET便于理解后面用到的TAPIR方法的使用。 文章目录 TAP-Vid: A Benchmark for Tracking Any Point in a Video— TAP-V…