GUI是在嵌入式设备中是非常重要的一环,GUI的好坏直接影响到了用户的体验。因此一个优秀的gui是非常重要的,为此我前阶段对gui稍微做了调研。
目前通用的gui有:
gtk系列:在linux下鼎鼎大名的gnome桌面就是基于gtk库设计的,当然gnome是gtk+Xwindow的方式,在嵌入式设备中的选择有gtk+DirectFB。
Qt系列:桌面应用有KDE,关于kde和gnome的恩恩怨怨可以google一下,很有意思,是开源界有名的斗争之一。Qt现在被nokia收购了,财大气粗,最近又有几个大动作,很有看头。
Minigui:国人开发的开源软件,短小精悍,比较适合低端嵌入式产品。但是只有1.3.3和1.6的开源,高版本的均需要付版权费。用还是蛮好用的,但这种先开源后闭源的做法实在让人不爽。而且minigui即使低版本也仅仅是支持gpl,不像qt那样直接支持lgpl,这就意味着如果你真的使用它做开发的话,你的应用程序也需要遵循gpl(也就是需要无偿贡献应用程序的源码,当然前提是你遵守gpl)。
再系统的说一下我为什么觉得qt是王道:
1. qt本身,绚丽的界面,支持多种平台(包括windows),大量qt软件可以很方便的移植过来,还有面向对象的结构使整个系统更加稳定;
2. 最重要的一点,传统上来说在linux开发总是让非专职linux程序员很痛苦,基本都是用命令行操作,没有人性化的界面。但是这一点在qt上彻底终结了,nokia做得最大的一件好事就是为qt在linux上的开发做了一套完整的ide,让用户从整个界面的设计,到函数的编写,程序的debug,函数的查询,到最后可执行文件的建立可以完全依靠这个集成开发环境,非常非常强大。
可以说有了这个ide(QT Creator),在linux上的开发和windows毫无差别,用户甚至连makefile都不用写,太神奇了,而且它支持交叉编译,你想把从X86架构换成arm架构,只需要在options中将库文件换成arm的库文件就可以了,再次赞一个。
内置图形设计软件,可以让你设计界面就像搭积木(甚至比MFC更方便),这点上比着其他的一些开源gui更强,用minigui只能苦苦的一个个控件自己用程序语言搭建。
3. 长远的看,背会nokia的强力支持,必将使qt得到更加长足的发展,我们现在就能感受 到变化了,从LGPL的开发,到qt Creator的发布,背会均体现了nokia的野心和对qt的期望。当然对我们开发者来说则看到了更美好的未来,有了nokia这棵大树,再也不用担心哪天qt倒了,我们将源源不断的获得最新的技术和支持(这也是胜之于minigui的很大一点)。
总结一下:
个人认为如果开发对界面,效果要求不高的工控设备可以采用minigui,毕竟它更加精简,对硬件的需求也更小。对于有足够的硬件支持(arm9以上的处理器,足够大的内存,64M以上)更加推荐用qt,效果会更加好,而且功能也会更加强大。