1.先讲 GTK+

GTK+ 主要用在 X Window 上,整个设计的架构和许多概念和 MFC 以及一般 Windows 上的程式开发大异其趣,入门门槛较高,而且最主要的特色是,它用不具有物件功能的纯"C" 語言,模擬物件导向。 所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错都不是很容易,但优点则是可以用 C,不需 C++,如果和 Win32 SDK 比較,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其它无所不包的 library,是简陋了一点,函数命名又臭又长。对于简单的程式,GTK+会显得太复杂,但是当你开始想扩充其它 library 也都沒提供的进阶功能,就会开始赞叹GTK+ 的架构严谨,还有超乎想象的高度弹性。同样的东西要用 MFC 來做反而会要人命,並且对多国語言的支援良好,內部也全面使用 UTF-8,相容性好,又是 unicode。能夠习惯的话,GTK+ 值得推荐,但沒有很建议学,毕竟不好学,要用到熟会需要比較久,而且那样很多 C++ 的功能会用不到。 GTK+ 有C++ 版本叫做 GTK--,沒用过,但看文件觉得,并沒有比 gtk+ 简单到那里去。 因为 gtk+ 本來就是物件导向,所以即使換了 c++ 語言,写起來架构还是差不多的。 另外,gtk+ 有 Windows 版本,但缺点是,执行缓慢,不稳定,而且界面是使用 gtk+ 自己的,不是使用 Windows 內建的"Native" 原生图形界面,看起来会不太习惯。 Mac OS X 下可用 X11 來執行 gtk+,但那样出來的程式是长得像 UNIX 程式,而不是美美的 OS X Aqua 外观。

2.再说wxWidgets

wxWidgets 和 MFC 最接近,命名习惯或架构都高度相似,会MFC的话几乎不用重新学习。它有十余年历史,此外,它的物件封裝比 MFC 要好,提供的功能也多上太多,又跨平台。一般知名的 MFC 程式都会选择用 wxWidgets 改写,來快速移植原程式到其他平台。例如, eMule 用 wxWidgets 移植出 aMule, xMule, 还在开发中的 Filezilla 3...等。而它最主要的特色是,它是"跨平台"的 "Native" GUI toolkit,在各种平台上都可写出使用该平台內建 Native 原生图形界面的程式。 在 Windows 上就長得跟其他 Windows程式一样,在 Linux 下就使用 gtk+ 的图形界面,在 Mac OS X 下就可以使用华丽的Aqua外观风格,这点是非常強悍。 不像 gtk+ 到其它系統都还是只能用 gtk+ 自己的。缺点是,中文支援在有些地方会出问题,例如剪贴簿的操作,得自己 patch。但仍然相当推荐,即使是个庞大的 library,效能依旧不会太差,尤其在 Windows 上执行速度并不输 MFC,与其学 MFC,不如学wxWidgets。

3.最后看看Qt

Qt 的功能,应该是这三者加上 MFC 之中最強大的,文件也很完整,又有 RAD 工具可以辅助开发,并且有商业公司做強力后盾。不但有 Windows/X Window/Mac 版本,甚至还有嵌入式系統可用的版本,稳定性还不错,物件封装也算良好,资源比 GTK+ 或wxWidgets 多得非常多,而且发行公司提供了相当多范例,算是一家以开放原始码成功赢利的模范公司。 知名的 KDE整个是用它开发,证明了它的稳定性和強大功能。缺点是如果你用它开发非 GPL 开放程式码的软体,必須以极昂贵的金额,购买商业版本。 而它的图形界面并不完全是 "Native GUI",只是透过 theme 去模拟系統上的标准 GUI,所以看起來很像,却会有些地方可以明显看出破綻。 执行速度缓慢还有过于庞大则是另一个问题。 虽然封装得很良好文件也齐全,并不代表他就很容易学还有一个严重问题是,它写的不是标准C++,它使用的 signal/slot 机制必須透过 Qt提供的 preprocessor 处理过才可以转送給编译器,这部份可能被限定用 qmake,算是一个可惜的地方,不过暇不掩瑜,还是很推荐。忘了说,它內部也是 unicode,多国语言没问题

转载于:https://www.cnblogs.com/shaoguangleo/archive/2011/06/15/2805758.html

GTK+, Qt, wxWidgets compare相关推荐

  1. x11 gtk qt gnome kde 之间的区别和联系

    转自:http://blog.csdn.net/lanmayi003/article/details/6584521 一,Linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应 ...

  2. Qt和wxWidgets 比较 以及其他GUI库

    这个,我个人觉得Qt比wxwidgets有前途多了,无论是资源还是人数,还是社区.关键是QT有商业公司和社区支持. 现在的QT无孔不入,win,linux,IOS,android,嵌入式板子,pyQT ...

  3. python 网络编程----非阻塞或异步编程

    From: http://blog.chinaunix.net/uid-20730371-id-765038.html 非阻塞或异步编程 例如,对于一个聊天室来说,因为有多个连接需要同时被处理,所以很 ...

  4. python基础===socket模块的讲解(转)

    一.网络知识的一些介绍 socket 是网络连接端点.例如当你的Web浏览器请求www.jb51.net上的主页时,你的Web浏览器创建一个socket并命令它去连接 www.jb51.net的Web ...

  5. Windows Forms、MFC、WTL、WxWidgets、Qt、GTK综合比较

    图形界面库Windows Forms. MFC.WTL. WxWidgets.Qt.GTK 综合比较见下表: 总结: GTK+主要用在X Window上,整个设计的架构和许多概念和MFC以及一般 Wi ...

  6. MFC、WTL、WPF、wxWidgets、Qt、GTK 对比

    文章目录 WTL MFC GTK wxWidgets Qt WPF cocoa OWL delphi 总结 WTL WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设 ...

  7. Qt、GTK 和KDE、GNOME的关系-转

    Linux 下的图形库介绍 在进行Linux下的图形系统编程时,我们常常会遇到以下这些概念: Framebuffer, X11, SDL,DFB, miniGUI, OpenGL,QT, GTK,KD ...

  8. MFC和QT等UI框架的特点

    UI设计的3大原则: 面向对象: MVC: 消息队列驱动: 直到现在各个UI系统,包括题主所提到的MFC.WPF.Qt,也包括其它,诸如Android SDK.Cocoa的构建仍旧建立在这3大原则的基 ...

  9. GUI界面的初步认识及其开发工具QT

    目录 1.GUI简介 2.GUI开发工具 3.Qt应用程序开发框架 1.GUI简介 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示 ...

最新文章

  1. 在r中对oracle,关于r:在Mac中安装ROracle
  2. xshell 7 官网免费下载
  3. DCMTK:表示基于文件系统的基本工作列表管理服务类提供程序的控制台引擎的类
  4. audacity_如何在Audacity中快速编辑多个文件
  5. 【数据结构与算法】【算法思想】【算法应用】【排序查找搜索】并行
  6. 【java基础知识】java打包运行时显示控制台内容
  7. 利用 jwt 可以获取用户的额外信息?
  8. 【收藏】图片垂直居中的解决办法
  9. 文字描边_CSS3实现文字描边的2种方法
  10. 父与子一起学python3_父与子的编程之旅(与小卡特一起学Python第3版全彩印刷)/图灵程序设计丛书...
  11. 运动重构(SFM)学习笔记一
  12. C语言 斐波那契数列
  13. 20不会电脑可以学计算机吗,20个关于计算机二级考试的技巧,不会不行!
  14. idea怎么运行c语言程序,IntelliJ IDEA 10.0 64位运行方法
  15. 互联网晚报 | 7月14日 星期四 |微博将整治用谐音字变体字传播不良信息;恒丰银行回应破产传闻;消息称字节正大量招聘芯片工程师...
  16. hexo中matery主题的个性化定制
  17. linux访问nfs文件夹,linux配置NFS网络共享文件夹目录
  18. java判断生日_java根据生日判断生日和星座
  19. 难以置信!网易首席架构师竟用了500页笔记,把网络协议给趣谈了
  20. java 数据库排序_Java如何排序数据库表的数据内容?

热门文章

  1. springBoot探索(2)——构建手脚架
  2. 《github一天一道算法题》:并归排序
  3. gunzip 和 unzip 解压文件到指定的目录
  4. mysql性能监控qps,tps,iops
  5. 餐巾计划问题 线性规划与网络流24题之10 费用流
  6. 互联网天生本质与产业大局的开始
  7. 你不知道的windows7 技巧大全【3】
  8. 微信小程序绑定数据以及自定义指令
  9. IOS 之__bridge__bridge_transfer和__bridge_retained
  10. zabbix_get 无法获取值(解决思路)