(非原创,网络摘抄)

跨平台的C++ GUI工具库很多,可是应用广泛的也就那么几个,Qt、wxWidgets便是其中的翘楚
这里把GTK+排除在外,以C实现面向对象,上手相当困难,而且Windows平台下执行相当慢且不稳定。

Qt和wxWidgets各有各的优点,也各有各的缺点,各有各的适合应用点。
工作环境和爱好限制,个人曾经分别使用过Qt和wxWidgets,
到现在,就个人而言,选择在一般程序方向采用wxWidgets,在手机应用程序方向采用Qt。

先说版权:
Qt,是芬兰的TrollTech公司研发的,现在属于Nokia,一直奉行的是双LICENSE策略,一个是商业版,一个是免费版:商业版的LICENSE就不说了,免费版的LICENSE,4.5版本之前一直采用GPL,意味着采用Qt的程序要么是商业软件,要么就是GPL软件,这就造成了虽然出了个著名的KDE,可惜应用范围还是受限,否则的话,应用应该更广阔点;不过还好,Nokia收购了之后意识到这个问题,4.5版本之后采用了LGPL,其他开发人员可以发布基于免费Qt库连接的商业软件了。

wxWidgets,一直奉行的是LGPL LICENSE。

再评评各自的优缺点:
Qt,一直以来开发公司作为商业公司进行运作,以客户需求为目标,提供了一系列完整的文档和RAD工具,并提供最为完整的平台支持;
对开发人员而言,Qt库本身,也是所有的GUI工具库中最为面向对象化的,同时也是最为稳定的。

罗列一下:
Qt的优点:
1. 支持的平台最多
2. 商业化支持
3. 完整的文档和RAD工具
4. 最为面向对象
5. 世界上最为成功的手机厂商支撑,对于移动终端的支持最为完善
Qt的缺点:
1. 使用的是非标准C++
2. 每个平台不是"Native GUI"
3. 过于庞大且运行缓慢
4. 与其它库不是很兼容(主要是STL之类的兼容问题)
5. 基本只能使用特定的qmake工具(其它工具经过良好的修改也可以,不过相当于重新编写一个qmake,是否值得)

wxWidgets,一直以来的LGPL发布,相当开放,积累了相当一部分研究用户,与现有各类工具库无缝连接地非常好;
同时可惜的是没有非常强大的正规商业化运作,可靠性、资源丰富性远比不上Qt。
还是罗列一下:
wxWidgets的优点:
1. 开放,对于各类第三方库的良好兼容(TAO工具中的Naming_Service Viewer就是采用wxWidgets的)
2. 支持各平台的"Native GUI"
3. 虽然有庞大的库,运行效果极为显著
4. 对各类现有工具的支持(笔者就采用MPC一站式产生所有项目的编译工程)
5. 偏MFC,对于Windows平台MFC程序的跨平台迁移,具有天然的优势
6. XRC,则提供了代码和设计分离的便利,程序员专注整体开发,UI设计群体则提供运行期界面、多语言版本支持功能等
wxWidgets的缺点:
1. 由于是偏MFC,则面向对象封装做得不是非常好
2. 相对缺乏的文档、资源
3. 缺乏很好的商业化支持,如果商业软件出问题需要支持,稍微麻烦点

总之:
在采用第三方工具库的复杂PC应用环境,有一定的底子,wxWidgets是不二的选择
在只需采用Qt单一工具库的应用环境,Qt是个不错的选择;特别是类似于手机这种嵌入式设备环境,由于Nokia的加入,Qt更值得一用。

wxWidgets 和 QT 之间的选择的更多相关文章

  1. 利用 XPath-jQuery 集锦手册在 XPath 和 jQuery 之间做选择

    利用 XPath-jQuery 集锦手册在 XPath 和 jQuery 之间做选择 利用 XPath-jQuery 集锦手册在 XPath 和 jQuery 之间做选择

  2. 如何在Power BI和Tableau之间进行选择?

    作者:Mike Gallucci 如今,当谈到商业智能(BI)分析软件时,有两个主要的行业领导者 - 微软的Power BI和Tableau.根据分析和业务平台的2018年Gartner Magic ...

  3. Qt 学习: 视图选择 (QItemSelectionModel)

    博主QQ:1356438802 选择是视图中经常使用的一个操作.在列表.树或者表格中,通过鼠标点击能够选中某一项,被选中项会变成高亮或者反色.在 Qt 中,选择也是使用了一种模型.在 model/vi ...

  4. javascript关于box2djs和matterjs之间的选择

    javascript关于box2djs和matterjs之间的选择box2djs资料少很多时候需要看c++版本资料 然后转化成js 还有转化成像素坐标不准确 matterjs文档丰富 上手容易 建议用 ...

  5. C++中,如何在标准库的std::string和常用库(Qt,VC等)的QString之间进行选择?

    假设一个场景:在写GUI程序的时候,如果GUI库和STL都提供了某个功能(比如容器字符串),应该如何在两个库之间选择? 做法是分层,比如分为frontend+core.开发core的时候只用STL,保 ...

  6. pyqt、webkit和qt之间的关系

    前言 最近在维护一个PYQT的项目,有很多不明白的地方,总结一下,共其他直接使用pyqt的人参考一下.PyQT是一个生成图形应用程序的工具包.是python语言和成功的Qt库的绑定.Qt库是这个世界上 ...

  7. MFC、WTL、WPF、wxWidgets、Qt、GTK、Cocoa、VCL 各有什么特点?

    WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得 ...

  8. MyISAM与InnoDB两者之间怎么选择

    1.MyISAM不支持事务,InnoDB是事务类型的存储引擎 当我们的表需要用到事务支持的时候,那肯定是不能选择MyISAM了. 2.MyISAM只支持表级锁,BDB支持页级锁和表级锁默认为页级锁,而 ...

  9. QT 交叉编译工具选择

    使用QT交叉编译,生成的都是x86的可执行文件.Zoro告诉我交叉工具配置错了. 参考链接: http://www.cnblogs.com/zengjfgit/p/4744507.html linux ...

随机推荐

  1. Chapter 4 Invitations——12

    "I don't know what you mean," I said, my voice guarded. “我不知道你什么意思”我声音谨慎地说道. "It's be ...

  2. HBase学习-HBase原理

    1.系统架构 1.1 图解   从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemS ...

  3. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  4. 基于 Nginx 的 HTTPS 性能优化

    前言 分享一个卓见云的较多客户遇到HTTPS优化案例. 随着相关浏览器对HTTP协议的“不安全”.红色页面警告等严格措施的出台,以及向 iOS 应用的 ATS 要求和微信.支付宝小程序强制 HTTPS ...

  5. [图解]ARP协议(一)

    一.ARP概述 如果要在TCP/IP协议栈中选择一个"最不安全的协议",那么我会毫不犹豫把票投给ARP协议.我们经常听到的这些术语,包括"网络扫描"." ...

  6. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——GifView控件的使用方式

    一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个GifView控件到窗体界面上 修改GifView的属性 Aut ...

  7. python学习笔记(十 三)、网络编程

    最近心情有点儿浮躁,难以静下心来 Python提供了强大的网络编程支持,很多库实现了常见的网络协议以及基于这些协议的抽象层,让你能够专注于程序的逻辑,而无需关心通过线路来传输比特的问题. 1 几个网络 ...

  8. OO_BLOG1_简单表达式求导问题总结

    作业1-1 包含简单幂函数的多项式导函数的求解 I. 基于度量的程序结构分析 1)程序结构与基本度量统计图 2)分析 ​ 本人的第一次作业的程序实现逻辑十分简单,但是OOP的色彩并不强烈,程序耦合度过 ...

  9. eclipse自定义工作区列表

    打开eclipse,在菜单栏上找到Window,点击Window--->Perspective--->Customize Perspective...,会看到 弹出来的一个窗口,然后点击最 ...

  10. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...