GUI的选择
08 Mar 2013 by LelouchHe
纠结的GUI
一直在Linux下混,很久都没有GUI的需求了,实在有个需求,也可以搭个web页面冒充下.其实在网络环境愈发通畅,web服务器越做越简单的当下,web其实是很好的交互.
但是还存在一些情况,web无法替代,比如游戏,比如将来要做的app.所以还是需要进行选择的.
windows下的GUI通常比较好选择,不考虑跨平台,直接用VS里的新版MFC,或者其他新的模板,微软出品,至少不差,而且还能试试新的metro风格.但Linux下就让人头疼了,至少有百八十个GUI库,各有各的特点,各有各的好,各有各的坏,让人纠结.
选择
本来的打算是用纯C的GUI库,因为觉得应该能更好的和其他语言融合,C++太大,支持的不好,而且现在已经彻底喜欢上C的风格了,觉得C更能锻炼人的设计(很多时候,C通过良好的设计,能达到比C++更紧凑的效果),但环顾一圈,只找到GTK++是支持C的,但看看文档,看看代码风格,觉得可以借鉴,但是过于复杂了,不容易上手,所以只能忍痛放弃了.
人们常说,面向对象不是万能的,但在某些情况下,非常有效果,经常提到的例子就是GUI.所以看来,使用一个支持OO的语言来设计GUI,应该是符合人性的.
那就选择C++,不过C++里也有很多选择,比如Qt,比如wxWidgets,比如各种各样其他的,但我非常不喜欢Qt那种需要特殊编译器的东东,所以我的选择只有wxWidgets.
其实选择这个,有个其他原因,我最爱的LinuxC++IDE—code blocks里面默认支持的就是这个,而且漂亮的code blocks(好吧..不能吐槽..)就是用wxWidgets做的,在不同系统有不同的原生界面,跨平台也非常不错,我想,是我的选择.
唯一不好的是,需要自己手动编译,而且开发版开发了N年了,还不能稳定,3.0多会儿才能出啊.
另一项选择
我学习GUI的另一个原因是我想做一个在Linux下的兵棋游戏.我的最爱toaw只能在win下运行,害得我每次玩都只能开虚拟机.我的笔记本性能差点,每次开游戏都会让我替笔记本担心,而且toaw里有很多不尽如人意的地方,我想开发自己的东东来玩,又能学习,又能娱乐.
既然是游戏,只有GUI肯定不成,还需要一系列的高性能的库来完成图形绘制,声音,输入等很多东西,这方面我有一定的开发经验,肯定是用SDL和OpenGL了,而且我也粗粗的看了下wxWidgets对这二者的支持,应该是比较不错的,所以是可以接受的.
最后的路
GUI使用的wxWidgets,搭框架或者控件,SDL/OpenGL做内部实现,完美.
努力学习吧,为了自己,为了明天.