当前位置: 首页 > news >正文

【Qt】背景介绍

【Qt】背景介绍

  • 行业介绍
  • 什么是客户端
  • GUI开发的各种技术方案
  • 什么是框架
  • Qt的发展历程
  • Qt支持的平台
  • Qt的版本后优点
  • Qt的发展前景

行业介绍

在我们的互联网中的核心岗位主要有以下几种

  1. 开发(程序员)
  2. 测试
  3. 运维(管理机器)
  4. 产品经理(非技术岗位,提出需求)

而我们这里主要关注的是开发方向
开发岗位又分很多方向:

  • 后端开发
  • 前端开发
    • 网页前端开发(做网页的)
    • 桌面应用开发(做电脑上的应用程序,Qt就是用来做桌面应用陈程序的,也叫客户端开发
    • 移动应用开发(做手机上的引用程序)
  • 算法工程师
  • 游戏开发
  • ……

什么是客户端

客户端的介绍

所谓客户端就是直接和用户打交道的一端从程序,就必然chrome,cctalk,……。
服务器:就是站在客户端背后的程序。

但是不是所有的应用程序都需要服务器做支撑的,比如画图板,计算器,也是直接和客户直接打交道,但是不需要后端服务的支撑,这些也叫做是客户端程序。

Qt其实准确来说是桌面应用开发(也就是写电脑上的程序的),Qt无法开发网页前端,也不能开发移动应用(但是目前的Qt官方也是支持移动应用开发了,但是目前并没有出现知名的商用移动应用程序使用Qt编写的)。

客户端的风格

客户端的任务就是编写和用户交互的界面,和用户交互的界面有两种风格:

  • 命令行界面/终端界面——TUI
  • 图形化界面——GUI

Qt就是用来桌面开发的GUI程序的一套框架。

GUI开发的各种技术方案

Windows编写GUI程序,也是有很多中方案解决的,Qt只是其中的一种方案。而windows主流的图形化界面开发有:
基于C/C++搭建的一些GUI开发技术体系:

  • Windows APIwindows系统提供的原生API(这个开发起来比较原生,也比较繁琐)
  • MFC:(上个世纪90年代诞生的)通过面向对象,对windows API进行封装。(但是目前已经不进行维护了)
  • Qt:(1991年左右诞生的)目前也是很有生命力的。

其他:

  • GTK,WxWidget……这些也是一些图形化界面开发的技术体系。
  • 有微软开发的变成语言C#(C sharp)Windows Forms(.net)量身定做的的一套GUI技术体系。
  • WPF,UWP这些可以说是windows Forms的一些升级版本。

开源社区

  • Electron:本质是基于HTML这样的网页,打包成一个windows上运行的客户端程序,这个最初是用来开发“atom”文本编辑器的,但是后期被微软的VSCode给替代了,但那时VSCode其实也是基于Electron的。但是有个比较大的缺点,就是有Electron开发出来的应用程序的效率低于以上的的开发技术体系。

而各种的GUI技术中Qt其实是比较主流的,而Qt的优势之一就是Qt支持跨平台,不经支持windows,也可以支持Linux,还支持Mac,这一点就是比较香的。而这一优点直接让Qt火爆了。所以当前的公司开发GUI技术,首选的基本上都是Qt的。

什么是框架

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

所谓框架其实是一个“半成品”,帮助项目搭建“骨架”,并提供丰富的组件库,开发人员只需增加一些内容或调用一些提供好的组件就可以完成系统。而框架也是用来限制程序员的自由,因为在软件开发中谈到自由,灵活的其实是贬义词,因为这意味着越容易出错,所以为了减少出错率就有大佬为我们提前写好了框架。

框架和库其实优点相似的,都是由大佬提前写好的,让我们去使用的,但是本质上还是有区别的。库是被程序员调用的,主体是程序员,但是框架的主体是框架本身,是程序员配合框架完善,填充框架留下的一些细节。

Qt的发展历程

  • 1991年Qt最早由奇趣科技开发;
  • 1996年进⼊商业领域,它也是⽬前流⾏的Linux桌⾯环境KDE的基础;
  • 2008年奇趣科技被诺基亚公司收购,Qt成为诺基亚旗下的编程⼯具;
  • 2012年Qt⼜被Digia公司收购;
  • 2014年4⽉跨平台的集成开发环境QtCreator3.1.0发布,同年5⽉20⽇发布了Qt5.3正式版,至此Qt实现了对IOS、Android、Embedded等各平台的全⾯⽀持

Qt支持的平台

  • Windows‒XP、Vista、Win7、Win8、Win2008、Win10
  • Linux(各种发行版),尤其是 Linux 中的KDE 桌面基于Qt构建的。
  • Macintosh‒MacOSX
  • Embedded‒有帧缓冲⽀持的嵌⼊式Linux平台,Windows CE
  • Android

Qt的版本后优点

版本:
目前最新的版本是Qt6.但是相对来说Qt6Qt5之间的核心功能区别不大.并且企业中也仍然有大量的项目在使⽤Qt5.因此咱们仍然使⽤Qt5版本来进⾏介绍.另外Qt在发布的时候还提供了两种许可证.

  • 商业许可:开发者以商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者需要购买商业许可并按照相关规定使⽤Qt框架。商业许可提供了更多的功能和服务,适合于商业软件开发。
  • 开源许可:开发者以⾮商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者可以免费使⽤Qt框架,但需要遵守开源许可协议的要求,如在软件中包含Qt许可协议的声明等。

优点:

  • 跨平台,几乎支持所有的平台;
  • 接⼝简单,容易上手,学习Qt框架对学习其他框架有参考意义。
  • ⼀定程度上简化了内存回收机制;
  • 开发效率高,能够快速的构建应⽤程序。
  • 有很好的社区氛围,市场份额在缓慢上升。
  • 可以进行嵌入式开发。

Qt的发展前景

Qt是一个强大且广泛应用于跨平台软件开发的框架。它提供丰富的工具和库,可用于开发高质量,高效率的图形用户界面(GUI)应用程序。并可以在windows,linux,MacOS等多种操作做系统上运行。

行业发展方向:

  • 物联网(IoT)和嵌入式系统的发展:
    在当下的嵌入式和物联网行业中,Qt的作用逐渐得到了体现,因为可以用它来开发具有GUI界⾯的嵌入式应用程序,这对于智能家居、汽车以及医疗设备等领域来说,具有非常重要的作用。
  • 自动驾驶和智能交通领域:
    现在很多的汽车都引入了自动驾驶的技术,而Qt在其中也有着⼴泛的应用,它可以开发车载嵌入式系统和用户界面程序。随着未来自动驾驶技术的发展,Qt在这方面的需求也会不断地增多。
  • 游戏开发:
    Qt有⼀些非常重要的功能模块,例如Qt 3D Studio,可以应用于游戏开发。未来游戏行业的持续发展,Qt在游戏行业的发展将会越来越多

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 6-1 jmu-Java-04面向对象进阶-01-接口-匿名内部类ActionListener
  • SQL Server2012保姆安装教程----带你快速上手数据库创建
  • 通过service访问Pod
  • JavaScript 内存管理
  • 1.4 边界值分析法
  • ECharts的特点
  • Python中set的用法详解
  • 【2024W32】肖恩技术周刊(第 10 期):太阳神鸟
  • HT8693 10W防破音单声道D类音频功放 9W单声道AB类音频功放
  • Maven配置及使用
  • C++ STL容器(三) —— 迭代器底层剖析
  • 解密谷歌Imagen:AI图像生成的新巅峰
  • 基于vue框架的传统文化传播网站设计与实现f7r43(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 手语手势识别系统源码分享
  • 应急响应--来不来得及走流程...
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • C++类的相互关联
  • QQ浏览器x5内核的兼容性问题
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • ubuntu 下nginx安装 并支持https协议
  • yii2权限控制rbac之rule详细讲解
  • 对象管理器(defineProperty)学习笔记
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 分布式任务队列Celery
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 设计模式 开闭原则
  • 首页查询功能的一次实现过程
  • 项目管理碎碎念系列之一:干系人管理
  • 学习JavaScript数据结构与算法 — 树
  • postgresql行列转换函数
  • 阿里云重庆大学大数据训练营落地分享
  • ​如何在iOS手机上查看应用日志
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #LLM入门|Prompt#3.3_存储_Memory
  • (1)Hilt的基本概念和使用
  • (2)STM32单片机上位机
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .java 9 找不到符号_java找不到符号
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Remoting学习笔记(三)信道
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET基础篇——反射的奥妙
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解