GTK+
● GTK+的网站:www.gtk.org;
● GTK+原本是Gimp的一个工具库,是在LGPL协议下发布的Unix系统GUI库;
● GTK+已经被移植到Windows,VMS以及其他的系统上面(在MacOS X上面现在可以通过苹果的X11应用程序实现,其本地版本正在开发之中),使用相同的API。但是,GTK+的设计初衷是Unix,多平台的开发是后来才加入的;
● GTK+是GNOME用户界面的原始构建库;
● 不同于wxWidgets,GTK+支持C语言(同样,GTK+也有一个C++的封装版本GTKMM,http://www.gtkmm.org);
● GTK+的API被很好的设计过,包含了安全类型转换和其他的一些机制,但是C++语言已经内建了这些;
● GTK+构建在glib库之上,这是一个通用库(在某些方面类似于C++的STL,它提供了一些数据结构,以及一些帮助内存管理的函数等);
● 在不同平台具有相对一致的界面,除了Windows XP,在XP系统中,GTK+尝试使用Wimp外观(基于UxTheme)来模拟Windows本地界面,获得了一定的成功。但是,它依然是一个Unix库;
● 既然wxWidgets在Unix上使用GTK(或是GTK2),也就没有什么理由在wxWidgets之上构建跨平台的C++程序了。
Kylix
● Kylix是Borland/Inprise的一个不成功的产品,所以很难说它还会继续被支持多久;
● Kylix基于Qt构建;
● Kylix仅支持为数不多的平台;
● Kylix的IDE使用了不少于三个库,并且很不专业。
Lazarus
● Lazarus是一个跨平台的开源RAD IDE,也是一个编写GUI程序的库;
● Lazarus很多地方与Borland Delphi兼容,相同的代码可以被这两个编译器编译;
● Lazarus有为本地使用或者客户端/服务器的数据库应用的数据展示组件;
● Lazarus仅支持Object Pascal;
● 工作方式类似于wxWidgets,支持很多底层的工具集:gtk1,gtk2,win32api,qt,carbon和winCEapi;
● 底层的免费Pascal编译器支持很多现在仍在使用的操作系统和架构;
● 现在它支持的平台比wxWidgets少。
Ultimate++
● Ultimate++仅支持Windows和Linux,不支持MaxOS;
● 在http://upp.sourceforge.net/www$uppweb$vswx$en-us.html的对比展示了一个简单的例子,但是这并不能说明这个库如何很好的开发更大的应用程序。
Notus
● Notus网站:http://sourceforge.net/projects/notus;
● 实际上存在wxWidgets ;) (豆子:原文是wxWidgets actually exists,这可能是说还有更好的wxWidgets);
● Notus似乎是要更多地使用标准库和现代C++概念,例如遍历器、模板、命名空间等等(相比之下,wxWidgets更多的是使用了非标准的方式);并且它更多地是借鉴了Boost的设计理念(你可以把它认为是一个好的或者不好的事情),它和Boost的其他的库在一起工作得很好。当然,既然它并不存在,这是不是真的还得要时间的检验。(豆子:看看Notus的站点,好像这是库是把泛型的概念带入到GUI编程里面)
MFC
● MFC仅仅能够在Windows上免费使用:
○ Visaul C++跨平台版本有一个maxintosh版(至少要800美元),但是自从4.1版本的编译器就不支持了;
○ 也有一些Unix的模仿,如MainWin,相当的昂贵,需要运行时协议,并且据说有一些有问题的支持;
● 如果一个程序使用wxWidgets或者MFC构建,并且源代码是开放的,那么EULA(豆子:最终用户许可协议)是不能约束wxWidgets的;
● MFC的执行程序比wxWidgets小(基本上是靠编译器实现体积缩小的);
● MFC拥有很多优秀的商业组件;
● 有人说,wxWidgets的事件表(event tables)要比MFC的消息映射(message map)好;
● wxWidgets的类层次结构更多合理,而MFC在顶层类名显得不那么一致性;
● wxWidgets提供了大量的相关的方便的工具类,而MFC提供了更多的窗口相关的类;
● 同.NET不同,MFC不会迁移到.NET平台;另一方面,wxWidgets已经有了初步的.NET版本;
● MFC提供了更多的组件,尤其是有关数据的控件;
● 有些地方使用wxWidgets更加简单一些,例如特定类型的窗口(如总是在最上方的窗口等),另一些地方使用MFC会更方便,日期选择工具条;
● 或许使用MFC最重要的一点是MSVC,这个IDE本身;
● 参见WxWidgets For MFC Programmers了解更多区别。
Mozilla Framework
● 参见http://www.mozilla.org/why/framework.html;
● 在Mozilla程序中需要使用JavaScript、XUL和C++;而wxWidgets只使用C++;
● 在Mozilla中使用C++(XPCOM)相当困难;在wxWidgets中使用C++就简单得多。
Tk
● Tk又称为:Tcl/Tk,Perl/Tk;Python/Tkinter;
● 参见:http://wiki.tcl.tk/tk;http://wiki.python.org/moin/TkInter;
● 古老的API,但是实现了基础的功能。很多扩展提供了新的组件:著名的BWidgets Tcl/Tk扩展提供了纯Tcl编写的megawwidgets
● 没有GridView~ListView,但是有一个简单的list;
● ComboBox是一种按钮;
● 默认命令是双击,但如果你希望“单击”或其他事件,那也是支持的,不过你会很难发现它们;
● Python将这个库选为默认的,但是一些发行版(如Pardus)并没有默认包含;
● 从一个组件获得返回值是通过StringVar、IntegrVar和DoubleVar类,这很令人困惑;
● 提供MaxOS X上面的本地外观(很久以来就是如此),使用Tile扩展实现Windows XP的本地风格,其他情况下是Win9x的风格;
● 在X11下并不能工作得很好。事实上,它看起来有点像Motif :-( ,看一下Tile扩展,它的目标是让Tk在X11下获得新生;
● Tk是工具命令行语言(豆子:原文是Tool Command Language)的一个扩展。这种语言是一个强大的跨平台脚本语言。但是不得不承认,Tcl的学习曲线很高,它是一种和C/C++完全不同的语言;
● 你可以把完整的Tcl/Tk应用程序包装成一个二进制文件,一个独立的Starpack,或者说是一个使用一种小巧的脚本解释器Tclkit运行的Starkit。发布就是这么简单。
VCF
● VCF网站:http://vcf-online.org;
● 清晰的OO设计;
● 在Windows是成熟的,部分支持MaxOS X和Linux;
● BSD协议。
WideStudio
● WideStudio网站:http://www.widestudio.org;
● WideStudio使用它自己的组件;
● WideStudio的安装包含在MinGW和gcc之中(不是可选的);
● WideStudio有一个IDE/设计器;
● 它的IDE/设计器有Eclipse插件版本(参见http://www.eclipse.org/dsdp/nab/);
● WideStudio没有控件交互的键盘导航;
● WideStudio的容器类不允许使用名字引用(如myWindow("labelCaption")->Test);
● WideStudio的库的总大小小于10M(2008-01-25),小型的应用程序的发行版小于4M。
什么情况下不应该使用wxWidgets?
● wxWidgets缺少创建漂亮的表格、图表的商业GUI组件。参见wxCode;
● 不支持主题(区别于在底层使用主题的工具库),除非你使用wxUniversal或者wxSkin;
● wxX11相比于其他的工具库只是一个子集,并且不稳定。你应当使用wxGTK,这个实现基于GTK构建,而不是直接在X11上面。wxX11更适合于没有GTK的嵌入式设备;
● wxWidgets试图支持大量的特性,因此,有些很少用到的组件不如经常使用的组件稳定。就像使用任何开源库一样,大量的测试是最佳的解决方案;
● wxWidgets没有提供任何平台的二进制发布。你不得不自己编译wxWidgets。wxpack提供了Windows平台上的wxWidgets的二进制版本,但是你需要下面几百兆的开发包;
● 使用本地组件使得相同的代码在不同平台表现有所不同,并且可能有一些平台相关的bugs。
==================================================
现在终于将这篇文章翻译完了。很多翻译不当的敬请谅解!虽然这是篇发布在wxWidgets上面的Wiki,但是我觉得写得还算中肯,因此是有一定的借鉴意义的。
这里列出了很多库,或许一些现在已经停止开发了,至少也算是见证一下C++ GUI库曾经的百家争吗、百花齐放的场面吧!呵呵…

转载于:https://blog.51cto.com/devbean/183119

wxWidgets与其他工具库的比较(下)相关推荐

  1. c++工具库大全(值得收藏)

    转自:http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 - 1. Webbench Webbench是 ...

  2. 覆盖所有领域的 Python 工具库汇总!建议收藏!!!

    文章首发于个人站点 覆盖所有领域的 Python 工具库汇总 公众号:[DreamHub] 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. py ...

  3. 可爱的python测试开发库(python测试开发工具库汇总)

    2019独角兽企业重金招聘Python工程师标准>>> 欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 Python测试开发库 参考资料 https://githu ...

  4. 整理了上千个热门的 Python 工具库,涵盖24个大方向!

    前言 大家好,Python 编程语言以语法简单.语言简洁.功能强大而闻名,根本原因是在于强大的社区生态. 今天我就给大家分享一下这些天梳理的近千个热门 Python 库,当我们需要某个方向的工具包时, ...

  5. 【C++】C++的工具库

    目录 处理高并发的库 日志 PRC 嵌入式文件系统 代码质量 深度学习库 HTTP 网络库 单元测试 性能测试 文件压缩 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 - 1. Webbe ...

  6. Python超简单容易上手的画图工具库

    今天,在网上发现一款很棒的python画图工具库.很简单的api调用就能生成漂亮的图表.并且可以进行一些互动. pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开 ...

  7. spacy库的安装与使用_PythonEEG工具库MNEPython详细安装与使用

    欢迎关注我们,选择加"星标"或"置顶" 更多技术,第一时间送达 主要内容如下: 安装Python(推荐安装Anaconda) 安装MNE-python 下载MN ...

  8. Python-EEG工具库MNE中文教程(10)-信号空间投影SSP数学原理

    目录 projector(投影)和投影背景 案例解释投影原理 导入工具库 什么是projector(投影)? 计算正交平面 使用SVD计算投影矩阵 本分享为脑机学习者Rose整理发表于公众号:脑机接口 ...

  9. Python-EEG工具库MNE-Python详细安装与使用

    目录 安装Python(推荐安装Anaconda) 安装MNE-python 下载MNE-Python中案例数据 测试是否安装成功以及简单使用 本教程为脑机学习者Rose发表于公众号:脑机接口社区 . ...

最新文章

  1. 2018AI最佳应用回顾
  2. oracle出错如何备份数据,备份oracle数据库出错
  3. 虚拟机linux中怎样打开qt,虚拟机中在Centos 4.7中安装qt-x11-opensource-4.4.3
  4. bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然
  5. python neo4j_在Python中使用Neo4j的方法
  6. 2020年MathorCup数学建模B题养老服务床位需求预测与运营模式研究全过程解题程序及多篇论文
  7. 视频--Pr 第一个剪辑
  8. MySQL调用存储过程和函数
  9. 诺基亚称霸时代终结 Ovi商店面临命运抉择
  10. 一元函数积分学基本计算例题
  11. [LaTeX] 将minipage环境中的脚注(footnote)放到正文并添加超链接
  12. 2022年江西二级建造师矿业工程施工技术综合测试题及答案
  13. 基于ngc的cuda镜像封装TensorFlow 实例
  14. Python MySQL 1054 Unknown column '\xe7\x88\xb1\xe6\x83\x85' in 'where clause'错误分析
  15. 第一章第六题(数列求和)(Summation of a series)
  16. 第一次实验结论与总结
  17. PADS学习之路09-PADS LOGIC创建原理图工程文件
  18. 2019西电复试计科,软件机试真题
  19. Word域的应用和详解
  20. 2021年软件类第十二届蓝桥杯 省赛 python组 F-J题解

热门文章

  1. centos 7 安装nfs 服务
  2. CentOS 7 Galera Cluster安装全攻略
  3. SQL优化常用方法24
  4. (转)Activity的四种launchMode
  5. VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
  6. [译]高效的TensorFlow 2.0:应用最佳实践以及有什么变化
  7. [原][osg]osgconv浅析
  8. BZOJ1566:[NOI2009]管道取珠——题解
  9. 听我说说我的博客: 月访问量过万的个人IT博客的技术史
  10. jquery获取元素的值,获取当前对象的父对象等等