【Qt】为什么Qt是你选择的理由?

news2024/12/23 19:18:33

目录

客户端

图形化界面

Windows环境下可以开发GUI的方案

Qt介绍

Qt的发展史

Qt所支持的平台

Qt版本

Qt的优点

Qt的应用场景

Qt的行业发展方向

Qt的发展前景

使用Qt的成功案例


一般来说,计算机的岗位有四种,分别是:

  • 后端
  • 前端
  • 测试
  • 运维

在前端开发中,存在着三种常见的前端开发场景:

  • 网页前端开发(做网页的)
  • 桌面应用开发(做电脑上的应用程序开发的)
  • 移动应用开发(做手机上的应用程序开发的)

而Qt是使用于前端开发中的桌面应用开发种的“客户端开发”的。

客户端

客户端:客户端是直接和用户打交道的这一端的程序。例如:chrome、qq音乐、steam等等。

        一般来讲,在联网的情况之下,客户端的背后是服务器,客户端一般来讲是服务器所支撑着的。但是并非所有的客户端程序的背后都需要服务器的,例如计算机,画图板等等也是不需要服务器的。

换一种方式来讲,“客户端程序”也是直接与客户进行交互的。所以,准确来讲,Qt特指用来进行桌面应用开发(电脑上写的程序)种所涉及的一套技术,Qt是无法进行开发网页前端额移动应用的。

【注意】关于移动应用的开发,目前Qt官方也是支持移动应用的开发的,但是目前还没有较为知名的商用移动应用程序是Qt开发的。

在客户端进行开发的过程中,其重要任务是:编写和用户交互的界面。

图形化界面

在与用户进行交互的界面中,俩种典型的风格是:

  1. 命令行界面或者终端界面(黑框框)
  2. 图形化界面

        命令行界面,也就是文本用户界面TUI,是指文本用户界面(Text-based User Interface),通过文本实现交互窗口展示内容,定位光标和鼠标实现用户交互。这种场景主要被专业人员使用,例如程序员。

        图形化界面,是图形化用户界面GUI,图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。其使用场景是普通用户。

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

        在Windows环境下,可以使用多种解决方案来编写GUI程序,Qt只是其中的一种。

Windows环境下可以开发GUI的方案

在Windows环境下,可以开发GUI的方案(根据历史进程介绍):

  • Windows API:Windows API 就是Windowsying,是针对Microsoft Windows操作系统家族的系统编程接口,这种Windows系统所提供的原生API,开发起来非常原始,也非常繁琐。
  • MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C++开发工具发布。目前最新版本为9.0(截止2008年11月)。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。在上个世纪的90年代,其影响力非常深远,而且在当时MFC与VC6.0可以算是旗鼓相当的。
  • Qt:Qt是1991年左右诞生的,与MFC不同,MFC已经很多年没有进行更新了,而Qt处于现在的环境中,依旧在不停的更新出新版本,具有很强的生命力

除此之外,GTK、WXwidge的影响力不是很大。

  • GTK(Gnome Toolkit)是一套跨多种平台的图形工具包,按LGPL许可协议发布的。虽然最初是为GIMP写的,但早已发展为一个功能强大、设计灵活的通用图形库。特别是被GNOME选中使得GTK+广为流传,成为Linux下开发图形界面的应用程序的主流开发工具之一,当然GTK+并不要求必须在Linux上,事实上,目前GTK+已经有了成功的windows版本。
  • wxwidgets是一个 c++编写的用来提供gui开发的框架。它包含一个可以支持现今几乎所有操作系统(Version 2 currently supports all desktop versions of MS Windows, Unix with GTK, Unix with Motif, and MacOS. An OS/2 port is in progress.)的GUI库和其他一些很有用的工具,提供了类似MFC的功能。

这些方案都是基于C/C++搭建出来的一些GUI开发的技术体系。

与此同时,微软在之后自发的创建出一种新的编程语言C#(C sharp)。

  • WPF:WPF 是.NET 框架的一部分,它提供了丰富的图形和多媒体功能,支持数据绑定、样式、模板、动画等特性,能够创建具有现代化外观和强大交互功能的桌面应用程序界面。
  • UWP 即通用 Windows 平台(Universal Windows Platform),是微软在 Windows 10 中推出的应用程序架构。
  • Electron:Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的开源框架。它结合了 Chromium 引擎(用于渲染界面)和 Node.js 运行时(用于后端逻辑),使得开发者能够使用前端开发技术创建具有原生应用体验的桌面应用。其本质上是把基于HTML这样的网页,打包成一个Windows上运行的客户端程序。

Electron这个技术体系最初是用来开发“atom”这个文本编辑器的,atom是Github开发的,但是后续atom被微软开发的VSCode所代替。

使用Electron的缺点是,Electron开发出来的程序,其运行速率是低于之前原生开发的技术体系的。

总而言之,Qt虽然仅仅是众多解决方案中的一种,但是价值还是蛮高的,使用Qt的商业公司的产生的产品也是非常多的。

Qt相比较其他的方案最明显的优势是:可以支持Windows、Linux、max等平台。

Qt介绍

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

【框架】:本质上就是一些大佬发明的,可以让普通程序员写出的代码变得更加靠谱。

        一个程序越自由,越灵活,也就意味着越容易出现问题,一个优秀的框架可以限制程序员的出错率,同时也就保证出错成本。在C++学习的过程中,有库这个概念,而库和框架的类似之处就是其都是大佬将代码实现完成,供别人使用的,二者不同之处在于库是被程序员所调用的,即库是主体;而框架则是主体,程序员配合框架,完善填充框架中流出的一些细节。

        学习过Java这个编程语言,对于框架来说是并不陌生的,而对于C++工程师,在编写C++代码的时候,框架也是十分重要的。C++的生态是割裂的,离散的,这与Java不同,Java存在着一些spring这样的社区,但是在C++不同的开源社区或者大厂公司中,也都会拥有各自的框架。

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

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

       
    

Qt的发展史

  • 1991年,Qt最早由奇趣科技开发。
  • 1996年,Qt进入商业领域,同时也是目前流行的Linux桌面环境KDE的基础。
  • 2008年,奇趣科技被诺基亚公司收购,Qt成为了诺基亚旗下的编程工具。
  • 2012年,Qt又被Digia公司收购。
  • 2014年,在4月份跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日发布了Qt5.3正式版本,至此Qt实现了对iOS、Android、embedded等各平台的的全面支持。

 

在计算机的1991年,诞生了很多有意思的产物:Qt、python、vim、openGL、Linux...

对于诺基亚手机,起初的塞班系统是最早的智能手机系统,在当时,诺基亚就主推Qt作为开发塞班系统应用程序的解决方案,但是随着诺基亚公司的崩塌对于Qt的影响也是极大的。

这里想说明一点,时代的更替速度是很快,把握当下,开辟未来,享受过去。

Qt所支持的平台

  • Windows-XP、Vista、Win7、Win8、Win2008、Win10
  • Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多X11平台。
  • Macintosh - Mac OS X
  • Embedded - 有帧缓冲支持的嵌入式Linux平台,Windows CE。
  • Android

在上述所支持的平台中,简单说明就是:

  • Windows(各个版本)
  • Linux(各个发行版本,尤其是Linux中的KDE桌面基于Qt构建的)
  • Mac系统
  • 嵌入式系统

【Linux平台】:Linux主要是给服务器使用的,服务器不需要图形化界面(TUI:基于命令操作,门槛更高,效率也就更高;GUI:基于图形化界面,门槛低,效率也就更低),但是也有少数用户使用Linux作为界面,在Linux桌面环境中,存在着多套桌面环境,例如:GNOME(基于GTK构建的),KDE(基于Qt构建的),但是Linux桌面在使用过程中存在着诸多问题。

【嵌入式系统平台】:嵌入式系统也是Qt实际开发中的一个主要场景,嵌入式系统需要低配置以及低成本。嵌入式系统一般使用在日常生活中,比如冰箱、洗衣机、路由器、投影仪等等,这些设备的内部也是有计算机的,但是这些设备里面的计算机硬件配置不是很高。

有些嵌入式系统,也是需要运行图形化界面的程序的,这个时候Qt的作用还是蛮大的,尤其是在一些工业领域中,但是,随着时代的更替,在工业领域中,Qt也收到了Android的挑战。

Qt版本

        目前来说,其最新版本是Qt6,但是相对于Qt6和Qt5之间的核心功能区别不大,并且企业中也仍然有大量的项目使用Qt5,后续的我会以Qt5来进行输出。

        【注意】在软件开发中,并非是越新越好,在进行商业开发的时候,相比引入新的特性,不如优先确保不引入严重的问题。

同时,Qt在发布的时候还提供了俩种许可证:

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

Qt的优点

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

Qt的应用场景

  • 桌面应用程序

Qt能够创建各种类型的桌面应用程序,包括文件管理器、媒体播放器、绘图程序等等。Qt应用程序支持多种操作系统,可以运行在Windows、Linux、macos等桌面操作系统上。

  • 移动应用程序

Qt支持Android和IOS移动操作系统,为应用提供了强大的跨平台能力。可以使用Qt构建各种移动应用程序,如社交应用、游戏、娱乐等等。

  • 嵌入式系统

Qt在嵌入式领域中的应用也是非常广泛的,它可以构建面向各种设备的图形应用程序,在机顶盒、车载娱乐系统、安防监控设备等领域具有广泛的应用。

Qt的行业发展方向

        Qt 是⼀个强⼤且⼴泛应⽤于跨平台软件开发的框架。它提供了丰富的⼯具和库,可⽤于开发⾼质量、 ⾼效率的图形⽤⼾界⾯(GUI)应⽤程序。并且可以在 Windows、linux、macOS 等多种操作系统上 运⾏。随着⾏业的发展,Qt的重要性也逐渐体现出来。
  • 物联网(loT)和嵌入式系统的发展
在当下的嵌⼊式和物联⽹⾏业中,Qt 的作⽤逐渐得到了体现,因为可以⽤它来开发具有 GUI 界⾯的嵌 ⼊式应⽤程序,这对于智能家居、汽⻋以及医疗设备等领域来说,具有⾮常重要的作⽤。

  • 自动驾驶和智能交通领域
现在很多的汽⻋都引⼊了⾃动驾驶的技术,⽽ Qt 在其中也有着⼴泛的应⽤,它可以开发⻋载嵌⼊式系 统和⽤⼾界⾯程序。随着未来⾃动驾驶技术的发展,Qt 在这⽅⾯的需求也会不断地增多。

  • 游戏开发
Qt 有⼀些⾮常重要的功能模块,例如 Qt 3D Studio,可以应⽤于游戏开发。未来游戏⾏业的持续发展,Qt在游戏⾏业的发展将会越来越多。

Qt的发展前景

        Qt 在各个⾏业的应⽤逐渐⼴泛起来,对于掌握 Qt 开发能⼒的⼈员需求也在不断增加,因此在就业⽅⾯,相对⽐于其他⾏业来说,Qt 就业⾯更⼴,选择性更多。 同时Qt 作为⼀项专业技能,掌握此项技术的开发者获得的薪资报酬也是⾮常可观的,具有更多的职业发展 机会。
        总之,如果掌握了 Qt 开发技术,未来的发展前景还是⾮常不错的。

使用Qt的成功案例

  • Linux桌面环境KDE

  • WPS Office办公软件

  • 谷歌地图

  •  VLC多媒体播放器

  • Wireshark:网络协议分析工具,用于捕获和分析网络数据包。
  • VirtualBox:虚拟机软件,允许用户在一台计算机上运行多个操作系统。
  • Autodesk Maya:知名的三维建模、动画和渲染软件。
  • Qt Creator:Qt 自身的集成开发环境(IDE)。
  • Krita:数字绘画软件,提供丰富的绘图工具和特效。
  • Calibre:强大的电子书管理软件。

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

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

相关文章

Golang通用代码生成器:仙童 电音仙女尝鲜版八,从MySQL8自动反射生成项目

Golang通用代码生成器:仙童 电音仙女尝鲜版八,从MySQL8自动反射生成项目 Golang通用代码生成器仙童,电音仙女尝鲜版八,此版本增强修复了数据库自动反射功能。更新修复了前端代码生成器无登录模块时的错误。修复了多对多候选的缺陷…

乐鑫原厂ESP32-S3模块ESP32-S3-WROOM-1区别与比较

乐鑫原厂ESP32-S3对外发售的模块,公开的有3类5种,分别是: 1,ESP32-S3-WROOM-1 模组 2,ESP32-S3-WROOM-1U 模组 3,ESP32-S3-WROOM-2 模组 4,ESP32-S3-MINI-1 模组 5,ESP32-S3-MINI-1…

Java对象流

对象流 对象输入流 java.io.ObjectInputStream使用对象流可以进行对象反序列化 构造器 ObjectInputStream(InputStream in) 将当前创建的对象输入流链接在指定的输入流上 方法 Object readObject() 进行对象反序列化并返回。该方法会从当前对象输入流链接的流中读取若干…

Python写UI自动化--playwright(在UI元素上悬停)

要在UI元素上执行鼠标悬停(hover)动作,可以使用page.hover()方法。这个方法使鼠标指针移动到指定的元素上,就像用户将鼠标悬停在该元素上一样。这对于触发那些依赖于鼠标悬停事件的行为(如显示下拉菜单、提示框或其他动…

【数据结构】哈希表(散列表)

介绍 哈希表(也叫散列表),是根据关键码值( Key value )而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数叫做散…

“您的连接不是私密连接”怎么解决?

遇到“您的连接不是私密连接”的警告时,这通常意味着浏览器无法与网站建立安全的加密连接,可能是因为网站的SSL证书存在问题或网络连接存在安全风险。 1、清除浏览器缓存和Cookies:清除浏览器缓存和Cookies有时可以解决这个问题,因…

在Qt中获取Windows中进程的PID

主要是用到了系统自带的工具【tasklist.exe】 利用 QProcess调用这个tasklist有一点坑&#xff0c;已经在代码中指出了。 指定为csv格式输出的话&#xff0c;在后处理时比较方便。 QList<quint64> listProcessIdentifier(QString processName) {QProcess process;QStrin…

华为OD应聘最全流程!!!

第一步&#xff1a;投递简历 提供姓名、邮箱、手机号、身份证号&#xff0c;务必慎重考虑&#xff0c;因为此后会被锁定在特定项目组。&#x1f4dd;&#x1f512; 这一步在招聘站点搜索一下即可&#xff0c;主要选择目标城市和岗位&#xff0c;一般投递之后就会有 HR 联系&…

springboot系列教程(三十):springboot整合Zookeeper组件,管理架构中服务协调

一、Zookeeper基础简介 1、概念简介 Zookeeper是一个Apache开源的分布式的应用&#xff0c;为系统架构提供协调服务。从设计模式角度来审视&#xff1a;该组件是一个基于观察者模式设计的框架&#xff0c;负责存储和管理数据&#xff0c;接受观察者的注册&#xff0c;一旦数据…

Tamato

1.导入靶机&#xff0c;扫端口目录 访问tomato/antibot_image/ 访问/antibot_image/antibots/info.php&#xff0c;右击查看源代码&#xff0c;发现文件包含漏洞 2.漏洞利用&#xff0c;在url后输入?image/etc/passwd,有显示&#xff0c;存在文件包含漏洞 发现端口没有全部扫描…

公网IP与内网IP的核心区别及辨别方法

今天我们来聊聊公网IP和内网IP的区别&#xff0c;以及如何区分这两者。在互联网时代&#xff0c;了解这些基础知识有助于我们更好地管理网络和设备。 公网IP与内网IP的区别 1. 定义和用途 公网IP&#xff1a;也称为外网IP&#xff0c;是由互联网服务提供商&#xff08;ISP&a…

现在还有一年期SSL证书吗?具体该怎么申请?

SSL证书&#xff0c;全称为Secure Sockets Layer Certificate&#xff08;安全套接层证书&#xff09;&#xff0c;是一种用于在互联网上验证网站身份和加密通信的数字证书。它类似于现实生活中的驾驶证、护照或营业执照的电子副本&#xff0c;但专门用于网络环境。SSL证书由受…

如何构建自己的交易机器人开发环境

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 本文主要讲解如何构建一个交易机器人开发环境。描述具体的步骤和工具&#xff0c;包括使用 GitHub Codespaces、Visual Studio Code&#xff08;VS Code&#xff09;…

线上教育在线课堂知识付费小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 线上教育在线课堂知识付费小程序源码系统&#xff0c;是一款专为教育机构、个人讲师及知识创作者设计的综合性在线教育平台解决方案。该系统基于微信小程序框架开发&#xff0c;充分利用了微信庞大的用户基础和高粘性的社交属性&#xff0c;为教育内容的传播与变现提…

Publisher - hackmyvm

简介 靶机名称&#xff1a;Publisher 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmPublisher 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Publisher&#xff09;&#xff1a;192.168.56.123 跳板机IP(window…

用Python实现AI人脸识别

实现AI人脸识别通常涉及到使用深度学习库&#xff0c;如TensorFlow或PyTorch&#xff0c;配合预训练的人脸识别模型。以下是一个使用Python和TensorFlow框架中的tensorflow_hub模块来加载和使用一个预训练的人脸识别模型的简单示例。 步骤 1: 安装必要的库 首先&#xff0c;你…

【已解决】在Docker的Alpine容器中使用Docke

在Docker中使用Docker有很多种方法。 这里介绍一种在Alpine中安装使用Docker的方法&#xff0c;这种方法使用的不是宿主机的Docker&#xff0c;而是容器自身的&#xff0c;所以封装起来比较方便。 运行Alpine 用以下命令运行一个Alpine&#xff0c;记得开启--privileged参数&…

一个纯前端实现的头像生成网站

大家好&#xff0c;我是 Java陈序员。 今天&#xff0c;给大家介绍一个纯前端实现的头像生成网站。 关注微信公众号&#xff1a;【Java陈序员】&#xff0c;获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 vue-color-avatar —— 一款基于 Vite Vue…

SpringBoot 依赖之Validation

Validation Validation 依赖名称: Validation功能描述: Bean Validation with Hibernate validator.使用 Hibernate 验证器进行 Bean 验证。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation&…