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

【QT】QT学习:Qt和其它GUI库的对比

转自:http://c.biancheng.net/view/3876.html

世界上的 GUI 库多如牛毛,有的跨平台,有的专属于某个操作系统;有的只有 UI 功能,有的还融合了网络通信、多媒体处理、数据库访问等底层功能。

Windows 下的 GUI 库

Windows 下的 GUI 解决方案比较多:

  • 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout;
  • 基于 C# 的有 WinForm、WPF;
  • 基于 Java 的有 AWT、Swing;
  • 基于 Pascal 的 有Delphi;
  • 基于Go语言的有 walk 和 electron;
  • 还有国内初露头角的 aardio;
  • Visual Basic 曾经很流行,现在逐渐失去了色彩;
  • 如果你有 Web 开发经验,也可以基于 Webkit 或 Chromium 将网页转换为桌面程序。


没有哪一种方案能够独霸 Windows,使用比较多的编程语言是 C++、C#、Java。
用 Qt 来开发 Windows 桌面程序有以下优点:

  • 简单易学:Qt 封装的很好,几行代码就可以开发出一个简单的客户端,不需要了解 Windows API。
  • 资料丰富:资料丰富能够成倍降低学习成本,否则你只能去看源码,关于 DirectUI、Htmlayout、aardio 的资料就很少。
  • 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,而 MFC、WTL、wxWidgets 比较麻烦。
  • 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑,而 Java 要安装虚拟机,C# 要安装 .NET Framework。
  • 跨平台:如果你的程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是必备的。

Qt 和 MFC

读者经常将 MFC 和 Qt 进行对比,MFC 只能应用在 Windows 平台,而 Qt 是跨平台的,一次编写,到处运行。
另外,Qt 已经封装了底层细节,学习 Qt 将会非常简单;而 MFC 只是给 Windows API 加了一层包装,不了解 Windows API 也学不好 MFC,大家普遍反映 MFC 难学。
我们不能简单地说 Qt 好还是 MFC 好,两者都有用武之地;但是初学者学习 Qt 会比较简单,不用应付那些烦人的 Windows API,很快就能开发出带有漂亮界面的应用程序。

Linux 下的 GUI 库

Linux 下常用的 GUI 库有基于 C++ 的 Qt、GTK+、wxWidgets,以及基于 Java 的 AWT 和 Swing。其中最著名的就是 Qt 和 GTK+:KDE 桌面系统已经将 Qt 作为默认的 GUI 库,Gnome 桌面系统也将 GTK+ 作为默认的 GUI 库。

有兴趣的读者请猛击《 Linux桌面系统》了解更多关于 KDE 和 Gnome 的内容。

相比 GTK+,Qt 的功能更加强大,更新也很快,比较受人们追捧。

Linux下各种GUI库对比图

图1:Linux 下各种 GUI 库对比图

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【代码格式化】linux代码格式化(Astyle)+wind格式转unix格式(Doc2Unix)----git提交代码前的处理...
  • gitlab-ci 持续集成完整实践---待学习
  • 【服务器】身份认证系统(三)什么是OAuth2 + oauth的权限系统(鉴权系统)
  • 【Vue.js】Vue 学习笔记
  • 【粘包和拆包】数据帧粘包和拆包处理方式
  • 【网关】什么是网关、网桥和交换机(集线器、网桥、交换机、路由器、网关大解析)...
  • 【软件设计】架构设计 分析组件化与模块化之间的区别
  • 【word】word 笔记
  • 【前端】webpack、npm、node、nodejs之间的关系
  • 【Vue】前端的单页面模式和多页面模式
  • 【软件架构】运用RUP 4+1视图软件架构设计(逻辑视图、实现视图、进程视图、物理视图和用例视图)...
  • 【软件架构】软件的设计图纸(用例图,类图,状态图,活动图,顺序图)
  • 【nginx】linux nginx 部署静态网页
  • 【servlet】servlet技术是否过时?
  • 【vue】vue.js不就是一个文件吗?安装vue是什么意思?
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 4个实用的微服务测试策略
  • codis proxy处理流程
  • echarts的各种常用效果展示
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JSONP原理
  • JS函数式编程 数组部分风格 ES6版
  • mac修复ab及siege安装
  • Node项目之评分系统(二)- 数据库设计
  • php面试题 汇集2
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • SQL 难点解决:记录的引用
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue学习系列(二)vue-cli
  • WebSocket使用
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 大型网站性能监测、分析与优化常见问题QA
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 高度不固定时垂直居中
  • 机器学习学习笔记一
  • 基于游标的分页接口实现
  • 讲清楚之javascript作用域
  • 你不可错过的前端面试题(一)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • mysql面试题分组并合并列
  • 数据可视化之下发图实践
  • 整理一些计算机基础知识!
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #define、const、typedef的差别
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)二分查找 超详细
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (备忘)Java Map 遍历