使用QT库替代wxWidgets库

上个月,QT发布了从V4.5版本开始,将发布LGPL协议的QT库;并且会发布应用于S60平台的QT库,另外,QT已经从V4.4开始支持Window Mobile(WCE)平台。

考虑到wxWidgets库不支持S60平台,因此决定研究一下QT库,把开发的GUI库转移到QT库。

 

在正式转移之前,当然要做一些可行性研究。这几天看了一下S60的参考手册及教材,并且编译了V4.5RC1版本,经过初步的研究,决定继续转移平台的进程,下面是对使用两个库的一些初步经验总结(个人观点,未免偏颇,欢迎讨论):

wxWidgets库缺点:

  1. 风格类似于MFC。虽然进行了增强,但大量使用宏,混杂使用现代C++语言特征与C语言编程特征。难于使用namespace等现代C++语言特性。
  2. 语言侵入性强, 单独使用个别库时需要对库进行初始化与清理工作。程序启动时的main函数完全被宏所取代,可定制性弱。
  3. 在开发过程中,使用MACRO进行条件编译的地方较多,使得程序不够简洁。

 

wxWidgets库优点:

  1. 开放性好,支持GNU的一些开放标准,如国际化、XRC等方面。
  2. 支持的语言多,可用于Python,PERL等环境,减少了多语言环境编程的学习难度

 

Qt库的优缺点:

  1. 库使用方法简洁,对编译环境侵入性弱。如程序启动为在main函数中创建QApplication实例,因而易于在创建之前完成其它工作。
  2. 广泛使用现代C++语言方式进行编程,如使用signal/slot库进行事件管理,较wxWidgets使用的方式简洁。
  3. RAD工具较wxWidgets下方便(个人观点)
  4. 应用面广,程序健壮性好
  5. 缺点是在某些方面相对封闭,未使用开放标准库,这可能与其license有关。如国际化等使用私有的方法进行管理。
  6. 不同平台下的库使用不同的源程序进行编译,优点是减少了预定义宏的使用,缺点是对库的的管理要复杂。这种方式是喜是优还要在后面的应用中来验证。

 

不管怎么说,基于QT方便应用移植到WCE与S60(即将支持),也需要把应用移植过来。当然在移植过程中还是会遇到很多的问题需要解决,一如当初使用wxWidgets一样。另外,在python等环境中,wxWidgets依然还是我的一个优先选择。

 

posted @ 2009-02-11 11:26  easyti  阅读(2423)  评论(0编辑  收藏  举报