[Qt] Qt介绍 | 搭建SDK

目录

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.mzph.cn/diannao/65640.shtml

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

相关文章

ES 磁盘使用率检查及处理方法

文章目录 1. 检查原因2. 检查方法3. 处理方法3.1 清理数据3.2 再次检查磁盘使用率 1. 检查原因 磁盘使用率在 85%以下&#xff0c;ES 可正常运行&#xff0c;达到 85%及以上会影响 PEIM 数据存储。 在 ES 磁盘分配分片控制策略中&#xff0c;为了保护数据节点的安全&#xff0…

NLP自然语言处理——使用飞桨实现基于LSTM的情感分析

任务说明&#xff1a; 通过对电影评论历史数据分析&#xff0c;构建深度学习分类模型&#xff0c;最终完成对新的数据样本的识别分类。 任务要求&#xff1a; 运用神经网络算法&#xff0c;创建、训练、评估模型&#xff0c;完成对电影评论的情感分类任务。 数据集说明&#xf…

LabVIEW条件配置对话框

条件配置对话框&#xff08;Configure Condition Dialog Box&#xff09; 要求&#xff1a;Base Development System 当右键单击**条件禁用结构&#xff08;Conditional Disable Structure&#xff09;**并选择以下选项时&#xff0c;会显示此对话框&#xff1a; Add Subdiagr…

为什么MoE推理效率更高:精简FFN

MoE全称是“混合专家”,它由多个专家网络和一个门控网络组成……整个MoE完全复用了Transformer的结构,只是将其中的FFN层替换成了MoE层。MoE层里的门控网络其实就是个专家分类器,每次根据输入Token生成专家的概率分布,然后选择排序靠前的K个专家进行Token处理,最后再将K个…

线段树例题题解

卫星覆盖&#xff08;NOI1997&#xff09; 题面&#xff1a; SERCOI&#xff08;Space-Earth Resource Cover-Observe lnstitute&#xff09; 是一个致力于利用卫星技术对空间和地球资源进行覆盖观测的组织。现在他们研制成功一种新型资源观测卫星 -SERCOI-308。这种卫星可以…

超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环

本文目录 一、知识点1. PID是什么&#xff1f;2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID&#xff08;用于位置环&#xff09;&#xff08;1&#xff09;公式&#xff08;2&#xff09;代码使用代码 2. 增量式…

STM32 SPI读取SD卡

七个响应类型&#xff1a; R1 Response (Normal Response): R1响应是最基本的响应&#xff0c;包含一个字节的状态位&#xff0c;用于指示命令是否成功执行。常用。最高位为0。最低位为1表示是空闲状态。其他位是各种错误提示。 R1b Response (Normal with Busy): 类似于R1&a…

玩转OCR | 腾讯云智能结构化OCR初体验

随着数字化进程的加速&#xff0c;光学字符识别&#xff08;OCR&#xff09;技术已逐渐成为提高企业生产力、优化工作流的重要工具。腾讯云智能结构化OCR凭借其领先的技术、广泛的应用场景和灵活的定制化能力&#xff0c;正在帮助各行业客户更高效地进行文档处理与数据提取。本…

STM32 高级 WIFi案例1:测试AT指令

需求描述 测试AT指令是否能够正常控制ESP32的wifi&#xff0c;比如重启、读取设备信息等。 思路&#xff1a; stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置&#xff1a; 第一步&#xff1a;对ESP32芯片烧录可以读取stm32命令的固件&#xff08;fac…

MySQL查看日志

目录 1. 日志 1.1 错误日志 1.2 二进制日志 1.2.1 介绍 1.2.2 格式 1.2.3 查看 1.2.4 删除 1.3 查询日志 1.4 慢查询日志 1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过 程…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化&#xff1f; Docker是一个开源容器化工具&#xff0c;用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中&#xff0c;为了将Spring B…

机器人基础-自由度及其简单计算

机器人基础-自由度及其简单计算 1.自由度&#xff08;DOF&#xff09;2.自由度的计算3.自由度计算例题例1.例2.例3. 对于一个机器人的手腕&#xff0c;一般要求实现对空间坐标轴X、Y、Z的旋转运动&#xff0c;分别是翻/回转&#xff08;Roll&#xff09;、俯仰&#xff08;Pitc…

初学stm32---高级定时器输出n个pwm波

目录 高级定时器简介&#xff1a;(F1) 高级定时器框图 重复计数器特性 高级定时器输出指定个数PWM实验原理 高级定时器输出指定个数PWM实验配置步骤 相关HAL库函数介绍 关键结构体介绍 高级定时器简介&#xff1a;(F1) 1.高级定时器 &#xff1a;TIM1/TIM8 2.主要特性&…

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql&#xff0c;明明在开发、测试环境都可以一把执行通过&#xff0c;却在预发环境执行前的语法检查失败了&#xff0c;提示有SQL语法错误。 这条SQL长这样&#xff0c;default_sql是要在odps上执行的sql语句&#xff0c;提…

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探&#xff1a;鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…

爱思唯尔word模板

爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接

flask后端开发(3):html模板渲染

目录 渲染模板html模板获取路由参数 gitcode地址&#xff1a; https://gitcode.com/qq_43920838/flask_project.git 渲染模板 这样就能够通过html文件来渲染前端&#xff0c;而不是通过return了 html模板获取路由参数

python实战案例笔记:统计出数据中路劲下没有文件的文件夹

数据样例&#xff1a;&#x1f447;有如下excel数据 需求&#xff1a;有如下excel&#xff0c;a.xls&#xff0c;统计出路劲下没有文件的路劲 详细实现代码&#xff1a; import os from openpyxl import Workbook from datetime import datetimedef get_empty_dirs(paths):# …

GXUOJ-算法-第一次作业(整数划分、汉诺塔、排列问题、数塔问题)

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…