为什么选择Qt?
来源:互联网 发布:普朗克常数算法 编辑:程序博客网 时间:2024/05/02 02:28
选择何种Guilib取决于项目的需求,譬如仅仅需要在Windows平台下能运行,那么用MFC就行了。然而谁都希望一次编写,到处编译。最终敲定使用Qt开发图形界面。那么Qt到底如何呢?
Qt软件前身为 Trolltech (奇趣科技),2008年6月被诺基亚收购。之后推出的Qt4.5 SDK 是以 LGPL 2.1 方式授权的,在Qt4.5之前,Qt在修改的GPL授权协议下发布,这意味着要么将程序开源,要么付费(而且价格不菲)。Qt4.5既然是在LGPL授权协议下发布,就意味着即使是使用它来开发商业程序,也可以不需要向Troll Tech公司购买授权许可。真是帅呆了!
而从网上搜罗了下Qt的优点,非常之多,而我认为一个sdk的优点之所以成为优点,都是通过比较中才体现出来的,如果一个优点同类产品多数也具备了,那么这个优点也就不是不再是成为优点的一个理由。所以我这里较少描述或者直接忽略诸如“XML支持”的优点。
1、作为一个多平台的C++图形用户界面应用程序框架,支持Windows,Mac,Linux/X11,嵌入式Linux,WindowsCE和S60平台。
2、Qt是完全面向对象的,其良好封装机制使得Qt的模块化程度非常高,可重用性较好,并且允许真正地组件编程。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。
3、丰富直观的c++类库
Qt包括多达250个以上的C++类,还替供基于模板的collections,serializationfile,I/Odevice,directorymanagement,date/time类。还包括正则表达式的处理功能。
4、具有跨平台IDE的集成开发工具
Qt的IDE很多,QtDesigner、QtCreator、QDevelop、Edyuk等,也能够同流行的IDE,如Visual Studio、Eclipse或者XCode进行整合。
5、支持2D/3D图形渲染,支持OpenGL;
6、在嵌入式系统上的高运行时间性能,占用资源小;
7、QT库在国际化和本地化方面十分突出,使用其开发的软件在实现多语言版本的软件时相当方便。
8、大量的开发文档;
其实除了Qt外,wxWidgets和GTK+都是十分值得考虑的选择,它们各有优势。然而gtk+一般说来开发门槛较高,wxWidgets优点不少,但是中文支持有点问题,而且从网上能搜罗到资源方面,Qt的资源显然比wxWidgets和GTK+要多得多。而先前qt颇受诟病的授权问题从Qt4.5之后也已经不存在了。
从目前的使用来看,KDE和Opera浏览器用Qt开发,而今年6月报道Qt SDK已经变成中科红旗最新推出的红旗 Linux 桌面 7.0 版的组件(http://qt.nokia.com/about-us-cn/news/the-qt-sdk-is-now-included-in-the-largest-linux-distribution-in-china-1)。此外,IBM和Borland Kylix也是Qt的用户。从Qt的使用情况这一角度来看,它是比较可靠的。
总结起来,Qt具有以下优点:跨平台、GUI框架成熟、良好的2D/3D能力,多线程支持良好,且有较多的业内成功范例。此外,目前Qt项目本身开发进度快,我们学习起来文档丰富,容易上手。
主要参考:
【1】Qt简介,
http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/overview/
【2】知名 GUI lib 简评 (GTK+, Qt, wxWidgets),
http://yuanmuqiuyu2000.blog.sohu.com/101517012.html
- 为什么选择Qt?
- 为什么选择Qt 4?
- 为什么选择Qt
- 为什么选择Qt呢?
- 为什么选择QT进行跨平台图形编程
- 为什么 qt 成为 c++ 界面编程的第一选择?
- 为什么 qt 成为 c++ 界面编程的第一选择?
- 为什么选择图形数据库,为什么选择Neo4j?
- 为什么选择图形数据库,为什么选择Neo4j?
- 为什么选择Gnutella?
- 为什么选择Delphi.Net
- 为什么要选择Zope?
- 为什么选择Style Report
- 为什么选择Coldfusion
- [转]为什么选择ColdFusion
- 为什么选择ASP
- 我们为什么选择深圳
- 为什么选择discuz
- Singleton设计模式的C++实现详解
- xinshou
- MFC 微软基础类(摘自百度百科)
- 《市场营销原理——图书篇》第2章
- How to: Creating Win32 Applications (C++)
- 为什么选择Qt?
- 利用按钮实现asp.net网页的关闭
- 简易清理垃圾程序
- MySQL要监控什么?
- 关于权限控制
- java的守护进程与用户进程的区别
- ECLIPSE快捷键
- 语句收藏
- 从零开始