C++的界面库经过几天来的搜索,总结了下面几种的优缺点
1. MFC
优点:VS2008以及VS2010的扩展确实很强大,特别是原生的窗口运行时停靠以及PropertyGrid确实很强大
缺点:默认字体很模糊,无论你对MFC多了解,C++多熟悉,每次写代码时依然要重新熟悉代码,更不用提分析别人写的MFC代码,一个字:乱。
2. WTL
优点:Windows下有个最好的例子:Google Chrome
缺点:缺乏设计器,文档例子很少
3. wxWidgets
优点:虚幻3编辑器在用(不是广告),wxAUI的布局设计器很方便,Windows原生界面很舒服,各种功能封装都很到位。
缺点:布局没有类似GTK+的Fixed绝对坐标方式(Windows SDK默认的左上角像素定位方式),在某些界面显得设计麻烦。 动态链接库多的吓人,工程过于臃肿。
4. Qt, GTK+
据说Windows下不是很好用。
5. DirectUI
有很多个人封装类似功能的库。界面,代码分离, 但99%都是收费
6. C# Windows Form
这是很好的选择,语言方面可以用C++/CLI 免得转换语言
自由停靠功能可以使用WeiFenLuo.winFormsUI.Docking 非常简单
7. WPF
有童鞋已经使用MFC/C++通过加载XML显示界面,不过通过资料显示,WPF的控件很少,甚至连原生的PropertyGrid都没有,设计器倒是很华丽
总结:界面库的选择最重要的一点就是看有没有很好的设计器,这个是高效开发的重中之重。我尊重MFC,敬仰MFC,它作为C++的框架库来说很不错,但是对于界面设计还是过老了。我们开发的是产品,出的是程序,而不是研究MFC,怎样用好MFC。
评论
现在Qt可以使用LGPL协议来开发,开发商用软件不用怕了 回复 更多评论
不管从哪个平台哪个角度,Qt都绝对是中规中矩的。
如果跨平台,绝对是Qt完胜。 回复 更多评论
只有在少数极端的情况下,你才需要你的GUI程序跨平台。你什么时候看见一个能用的C/C++写的带GUI软件,可以在不用改代码的情况下,两边都编译的。 回复 更多评论
跨平台的GUI确实没那么大需求,对于游戏的话,基本做到Windows和Mac已经很不错了 回复 更多评论
不是极端,而是需要,你就得用,亲爱的。
你只是不需要罢了。不代表别人就不需要。。。 回复 更多评论
Qt并不慢,嵌入式都在用。况且就算慢点,恐怕用肉眼跟其它GUI Kit都区分不出来。Qt的图形性能就不说了,Maya看中的就是它。跨平台只是它附加的优点,在Windows下Qt也是最好的GUI Kit之一。并不是简单地要跨平台就Qt,不跨平台就非Qt。通常限制大家选择Qt的几个原因是:
1. 已经学会了其它图形库
2. 要发布小巧的软件,Qt带的DLL太大了
3. 会Qt的人少,招不到人
4. Qt封装层次太高,而软件需要使用很多的平台特性。 回复 更多评论
当然wpf,其余的UI设计和wpf相比不是同一个高度级别的。 回复 更多评论
Firefox? 回复 更多评论
性能一点都不差,尤其是 GraphicView系统,支持硬件加速哦
跨平台是没得说,PC平台通吃,被Nokia收购后 ,手机平台也占了一半了。
特别是 signal/slot 系统,非常完美的C++下的回调和事件通知架构,MFC的消息映射简直是杯具。
如果说QT有什么缺点,就是运行库有点大,静态链接也有 1.5Mb,动态则接近10M。但是如果你想写个中等规模的软件,比如 2-30万行源代码,那么就不是问题了。QT是更适合写大程序的。 回复 更多评论
只有在少数极端的情况下,你才需要你的GUI程序跨平台。你什么时候看见一个能用的C/C++写的带GUI软件,可以在不用改代码的情况下,两边都编译的。
严重同意 回复 更多评论
同意
回复 更多评论
@空明流转
一般来说,应该为不同的操作系统设计不同的GUI,这样才能让不同操作系统的用户都能感受到这个软件的便利性。 回复 更多评论
Code::Blocks就是跨平台的,使用wxWidgets库开发。 回复 更多评论
Qt的最大缺点是LGPL无法静态链接。
这样,你只能背着好几十MB的DLL,这样的程序发布出去,打包也要接近10MB。
我想,这是无法让人接受的! 回复 更多评论
开源的,免费的
全功能媲美商业directui的界面库
已经有好多人研究viksoe的那套界面库了,
做了不少改进
其实想想,如果qq界面库那样的,有一套开源的,
vc做界面的麻烦也不会像现在这么多 回复 更多评论
MFC是必须掌握的.优点是他的资源多.
看情况你可以选择一个界面库,然后精通.
目前完美的界面库还不存在.
项目上用MFC+Xtreme ToolkitPro 基本搞定一切.
Xtreme ToolkitPro,网上破解一大把.
带一个专业的设计器,你們看着办吧.
回复 更多评论
它的意义在于节省开发人员的精力,少学一种技术,额。。。 回复 更多评论
扯淡,WIN32平台的消息机制哪点悲剧了?不会用就别瞎说。
signal/slot机制不是回调,也就是信号触发执行某个过程的机制罢了——当然不是用回调,否则跨线程怎么解决?跟消息机制大同小异,看你吹的好像是什么了不起的东西一样。
qt 值得称道就是就是跨平台而已,其他跟MFC一个层次,别瞎吹嘘了 回复 更多评论
Qt源码包的QtCreator就能在不更改任何代码的情况下在windows、MacOSX、Linux下完成编译,并且运行正常。 回复 更多评论