在Visual Studio 2003/2005/2008下开发Windows图形界面程序,程序员一直做着抉择:选择.net平台,则意味着需要XP用户安装.net Framework, 而且自己不能手工控制某些代码的优化;选择原生C++/MFC平台,则意味着需要编写繁琐的代码(VS2008甚至裁掉了基于MFC的GUI Designer,所有MFC GUI代码,除IDE内置的可怜的框架外,必须手工产生)。 自从Visual Studio 2002发布以来,微软一直在C++平台推C++向.NET平台的转换,先后推出了Managed C++和其升级版本C++/CLI,而对原生运行的C++一直冷淡,除了更加符合标准之外,几乎没有新的库加入。而同时,开源阵营的C++平台迅速发展。其一是GCC4大幅度提升了编译优化,二进制码质量已经超过了原生编译的Visual C++;其二是一系列开源跨平台的GUI库(例如Qt、WxWidgets、GTK等)的蓬勃发展,已经达到和超过了一代巅峰Visual C++ 6.0(MFC库)的水平了。 下面笔者就向大家简要介绍Qt这个库。笔者个人认为,在Qt、WxWidgets、GTK三个开源C/C++库中,Qt的设计思路、IDE支持、代码执行速度都达到了较好的(至少,能和微软的Visual C++/CLI媲美)的水平。(GTK是基于C的,也是面向对象风格,比较适合C开发者。) 历史 Qt本来是trolltech公司设计的一个跨平台库。2008年trolltech被诺基亚收购,Qt就成了诺基亚的官方GUI界面库。 包含的模块(摘自维基百科) * QtCore—QtCore模块是所有基于Qt的应用程序的基础,提供信号与槽的对象间通信机制、IO、事件和对象处理、多线程 * QtGui—包含了开发图形用户界面应用程序所需的功能。使用其支持的各个平台的本地图形API。支持反锯齿、向量形变。支持ARGB顶层 widget * QtMultimedia * QtNetwork—提供了网络程序设计功能。支持通用协议,如HTTP、FTP和DNS,包括对异步HTTP 1.1的支持。与较低层的TCP/IP和UDP协议,如QTcpSocket、QTcpServer和QUdpSocket * QtOpenGL—提供在应用程序中使用OpenGL和OpenGL ES加入3D图形。在Windows平台上亦支持Direct3D * QtOpenVG * QtScript— 包含完全集成的ECMA标准脚本引擎。提供信号与槽机制简化对象间通信和QtScript调试器。 * QtScriptTools—额外的Qt Script组件 * QtSql—将数据库集成至应用程序。支持所有主要的数据库驱动包括ODBC、MySQL、PSQL、SQLite、 ibase、Oracle、Sybase、DB2。 * QtSvg—支持SVG格式 * QtWebKit—集成WebKit,提供了HTML浏览器引擎,便于在本地应用程序中嵌入网络内容和服务。 * QtXml—提供了XML文档的阅读器和编写器、支持SAX和DOM。 * QtXmlPatternsl—提供了XQuery和XPath引擎支持。 * Phonon—集成Phonon,支持跨平台应用程序播放音频和视频内容。 * Qt3Support—模块提供兼容Qt 3.х.х版本的程序库 从上面可以看出,Qt可以取代自Visual C++ 6.0中就开始支持的MFC、Winsock、MSHTML、MSXML、MSDXM(以及后来的Windows Media Player控件)、ADO数据访问等模块。 开发环境IDE 开发环境是程序员最为关注的,Windows平台微软VC++、VB、C#系列语言的成功,就是因为有了强大的Visual Studio开发环境. |