战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

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。

posted on 2010-07-28 17:22 战魂小筑 阅读(25045) 评论(28)  编辑 收藏 引用 所属分类: 界面 接口C++/ 编程语言

评论

# re: C++界面库的抉择 2010-07-28 19:06 GunsNRose
Qt 现在挺不错的,在WIN下也好用,新版的maya要用Qt来开发
现在Qt可以使用LGPL协议来开发,开发商用软件不用怕了  回复  更多评论
  

# re: C++界面库的抉择 2010-07-28 19:10 老鱼
Qt除了发布时带的DLL大点之外,其它方面完胜各GUI Kit。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-28 19:23 right
不是说QT的性能差强人意吗?  回复  更多评论
  

# re: C++界面库的抉择 2010-07-28 20:13 空明流转
我咋觉得你这个比较都说烦了。
不管从哪个平台哪个角度,Qt都绝对是中规中矩的。
如果跨平台,绝对是Qt完胜。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-28 20:43 yrj
Google Chromium 只用了 WTL 的一点点东西,它有自己的 UI 体系  回复  更多评论
  

# re: C++界面库的抉择 2010-07-28 23:57 陈梓瀚(vczh)
@空明流转
只有在少数极端的情况下,你才需要你的GUI程序跨平台。你什么时候看见一个能用的C/C++写的带GUI软件,可以在不用改代码的情况下,两边都编译的。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 08:55 毛毛
试试C++Builder的VCL吧,呵呵  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 08:56 战魂小筑
@陈梓瀚(vczh)
跨平台的GUI确实没那么大需求,对于游戏的话,基本做到Windows和Mac已经很不错了  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 11:11 空明流转
@陈梓瀚(vczh)
不是极端,而是需要,你就得用,亲爱的。
你只是不需要罢了。不代表别人就不需要。。。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 11:30 老鱼
@right
Qt并不慢,嵌入式都在用。况且就算慢点,恐怕用肉眼跟其它GUI Kit都区分不出来。Qt的图形性能就不说了,Maya看中的就是它。跨平台只是它附加的优点,在Windows下Qt也是最好的GUI Kit之一。并不是简单地要跨平台就Qt,不跨平台就非Qt。通常限制大家选择Qt的几个原因是:
1. 已经学会了其它图形库
2. 要发布小巧的软件,Qt带的DLL太大了
3. 会Qt的人少,招不到人
4. Qt封装层次太高,而软件需要使用很多的平台特性。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 15:51 heguo
如果不怕安装.net4框架
当然wpf,其余的UI设计和wpf相比不是同一个高度级别的。  回复  更多评论
  

# re: C++界面库的抉择 2010-07-29 17:25 匿名的懦夫
@陈梓瀚(vczh)
Firefox?  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-07-29 18:25 姚冬
如果开发语言选择C++的话,QT 无疑是最佳选择。
性能一点都不差,尤其是 GraphicView系统,支持硬件加速哦

跨平台是没得说,PC平台通吃,被Nokia收购后 ,手机平台也占了一半了。

特别是 signal/slot 系统,非常完美的C++下的回调和事件通知架构,MFC的消息映射简直是杯具。

如果说QT有什么缺点,就是运行库有点大,静态链接也有 1.5Mb,动态则接近10M。但是如果你想写个中等规模的软件,比如 2-30万行源代码,那么就不是问题了。QT是更适合写大程序的。  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-07-31 18:46 姚冬
我用我的愚蠢了解QT的特性,谢谢各位  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-07-31 18:48 姚冬
@陈梓瀚(vczh)
只有在少数极端的情况下,你才需要你的GUI程序跨平台。你什么时候看见一个能用的C/C++写的带GUI软件,可以在不用改代码的情况下,两边都编译的。

严重同意  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-08-01 19:43 kuafoo
GUI 跨平台很没有意思  回复  更多评论
  

# re: C++界面库的抉择 2010-08-04 09:21 King Qiu
@yrj
同意
  回复  更多评论
  

# re: C++界面库的抉择 2010-08-04 09:48 Benjamin
应用第一,用过了几个后,你会发现其实实现原理都差不多  回复  更多评论
  

# re: C++界面库的抉择 2010-08-08 19:15 陈梓瀚(vczh)
@匿名的懦夫
@空明流转
一般来说,应该为不同的操作系统设计不同的GUI,这样才能让不同操作系统的用户都能感受到这个软件的便利性。  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-08-26 12:57 Loaden
@陈梓瀚(vczh)
Code::Blocks就是跨平台的,使用wxWidgets库开发。  回复  更多评论
  

# re: C++界面库的抉择[未登录] 2010-08-26 13:00 Loaden
Qt并不适合个人开发小软件的!
Qt的最大缺点是LGPL无法静态链接。
这样,你只能背着好几十MB的DLL,这样的程序发布出去,打包也要接近10MB。
我想,这是无法让人接受的!  回复  更多评论
  

# re: C++界面库的抉择 2010-09-17 20:34 侠客西风
以后会有一套非常优秀的
开源的,免费的
全功能媲美商业directui的界面库

已经有好多人研究viksoe的那套界面库了,

做了不少改进

其实想想,如果qq界面库那样的,有一套开源的,

vc做界面的麻烦也不会像现在这么多  回复  更多评论
  

# re: C++界面库的抉择 2010-10-27 17:36 天下
WIN32API是最基础,是一定得精通的.
MFC是必须掌握的.优点是他的资源多.
看情况你可以选择一个界面库,然后精通.
目前完美的界面库还不存在.
项目上用MFC+Xtreme ToolkitPro 基本搞定一切.
Xtreme ToolkitPro,网上破解一大把.
带一个专业的设计器,你們看着办吧.


  回复  更多评论
  

# re: C++界面库的抉择 2010-11-24 00:05 null
@陈梓瀚(vczh)

它的意义在于节省开发人员的精力,少学一种技术,额。。。  回复  更多评论
  

# re: C++界面库的抉择 2011-03-28 23:21 阿布
@姚冬

扯淡,WIN32平台的消息机制哪点悲剧了?不会用就别瞎说。
signal/slot机制不是回调,也就是信号触发执行某个过程的机制罢了——当然不是用回调,否则跨线程怎么解决?跟消息机制大同小异,看你吹的好像是什么了不起的东西一样。
qt 值得称道就是就是跨平台而已,其他跟MFC一个层次,别瞎吹嘘了  回复  更多评论
  

# re: C++界面库的抉择 2012-02-17 14:19 mjy
@姚冬
Qt源码包的QtCreator就能在不更改任何代码的情况下在windows、MacOSX、Linux下完成编译,并且运行正常。  回复  更多评论
  

# re: C++界面库的抉择 2012-02-27 17:42 marvin
如果使用wpf,倒觉得telerik的控件不错,我用过silverlight版的  回复  更多评论
  

# re: C++界面库的抉择 2012-12-13 10:03 陈生
如果你是C++客户端界面高手,请加入我的团队,我能让你成就大业!QQ34707369  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理