你最好的库创buildGUI(GTK,QT,WIN32 API等)?

在你看来,什么是在Windows创buildGUI的最佳方式? 用gtk或win32 api?

你推荐GTK的Windows? 是的? NO? 为什么?

让我们来看看。

  • Win32是非常低级的,基于C的,使用起来很尴尬。
  • MFC被认为是过时的。
  • C#(或C ++)与.NET可能是您特定于Windows的开发的主要选择。
    • 甚至有半限制的方式将该代码移植到其他平台(单声道)。
  • Java对于“刚刚运行”的平台非常独立的代码来说是非常棒的。 对不起,你说的是C ++。
  • QT是相对平台无关的。
  • GTK +,当然,虽然我个人没有太多的经验。

就个人而言,如果我做特定于Windows的东西,我使用.NET – 在Visual Studio中的工具是非常强大的,它是一个伟大的无所不包的套件。

对于平台无关的东西,我使用Java,但这可能不是您的选择工具。 我见过QT用于这个目的很多。

如果你只是为了窗口的GUI,我会强烈推荐WIN 32 Api。 我已经在GTK +,pyGtk,FLTK中做了很多的应用程序,并学习了Qt,MFC和SmartWin ++。 相信我,但我喜欢Win32 Api最好的。 它可能有一个陡峭的学习曲线,但创建本地Windows应用程序,它是最快和最好的。 而更复杂的你的程序得到,更容易的Win32 Api与其他工具包进行比较。 在Win32 API中你可以做的事情,你不能在任何其他的工具包。

测试:

开始时间(简单的菜单和按钮gui):GTK + = 7秒; Qt = 4秒; WxWidgets = 3.32秒; FLTK = 1秒; Win32 Api = 0.34秒;

采取的空间:Gtk + = 132 kb; Qt = 4.5 mb; WxWidgets = 4.5 MB; FLTK = 54kb; Win32 Api = 6.5 kb;

你真的有很多的GUI工具包/框架可供选择:Qt,wxWidgets,GTK + / gtkmm,WinAPI,MFC,.NET WinForms / WPF …这些只是流行的。

既然你限制自己的C ++,我会罢工.NET,因为.NET上的C ++旨在作为非托管和托管世界之间的连接。 这并不意味着你不能将它用于其他类型的开发,但考虑到语法尴尬和无数的陷阱,我不会去用它。 此外,VS的WinForms代码生成器将表单的代码放入头文件.. brrrr

正如其他人所说,WinAPI是用C编写的,速度非常快,功能强大,但是程度很低,不容易编程/学习。 MFC将是一个选项,因为它是用C ++编写的,比WinAPI更容易使用,而且功能也非常强大。 但是,它已经过时了(主要是因为.NET的存在)。

我不会推荐用于Windows的 GTK + / gtkmm(一个用于GTK +的C ++包装器) 因为你没有获得原生的Windows外观,在开发人员的机器上设置起来相当麻烦,而且还需要大量的依赖安装在用户机器上。 这实际上是可惜的,因为特别是gtkmm有一个非常漂亮的阶层和设计。 可能是设计最好的GUI库之一:)

这就是说,我会推荐什么? Qt或wxWidgets。 两者都是用相当现代的C ++编写的,积极开发,具有良好的库设计,运行多平台并提供大量的功能。 无论如何,请在这里回答一下答案中列出的一些库,看看哪一个可以让你做最想做的事情:)

win32 api太复杂了,MFC太烦人了。 我在Windows中使用了MFC,win32api和Qt。 在我看来,Qt是最好的。 我没有尝试GTK,所以对此一无所知。

过去我曾经使用GTK +进行多平台应用程序。 我发现学习和使用相对简单。 在我看来,GTK +的主要优点是您将能够将应用程序移植到其他窗口系统。 主要的缺点是它看起来不像其他的Windows应用程序。 如果你正在做跨平台工作,或者已经非常熟悉GTK +(没有时间去学习一个新的工具包),我会推荐它。

两者都是为c,但是gtk(gtkmm)有一个很好的包装。

gtk有它自己的样子,所以在用户端没有用户界面元素的皮肤(用windows风格)。 但我更喜欢用它编程。

win32,mfc,.net大多局限于ms visual studio,而gtk很难与vs一起使用

你应该看看win32,.net,gtkmm和qt。 试着编写一个简单的hello世界程序

win32的好处:

  • 本地Windows代码
  • 快速

缺点:

  • 没有类,只有C与句柄(非常糟糕)
  • 在我看来非常糟糕的记录

gtk的上升(mm):

  • 易于学习/编程
  • 有据可查

缺点:

  • 莫名其妙难以安装开发文件
  • 没有本地窗口看

如果Linux(或Mac)的兼容性是你关心的话,那么Qt。 其他Win32。

就我个人而言,我更喜欢Qt,但这取决于您想要制作的用户界面。

对Win32:

  • 低层次,高复杂性来完成微不足道的事情。 你必须做所有事情

  • 如果你走这条路,我会推荐一本像Petzold的书。

赞成Qt:

  • 好看的图形用户界面

  • 通过创建样式表可以很容易地改变外观和感觉

  • 信号和插槽机制通知您的UI事件,如“点击按钮”等

  • 好的布局系统

  • 与Visual Studio IDE集成

  • 现代面向对象的c ++代码,易于理解和使用

  • Qt助手(非常好的文档)

  • 相对自由的许可(LGPL)

  • Qt Designer – 所见即所得的设计工具,您可以使用表单设计

  • 附带丰富的其他c ++功能,包括XML,网络,事件回调,线程,数据库访问等

对Qt:

  • 使用MOC编译器的中间步骤

临WPF:

  • 如果你想要新的Windows平台的新的WPF功能,WPF是要走的路。

您可能想要尝试Winforms或WPF。 如果您仅限于使用C / C ++,则可以使用编译器的/ clr选项嵌入.NET代码,以便为Winforms或WPF嵌入.NET代码。 资料来源:

http://msdn.microsoft.com/en-us/library/k8d11d4s(VS.71).aspx
http://msdn.microsoft.com/en-us/library/ms754130.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.aspx
个人经验

对于平台独立开发,我会推荐Qt而不是当前的GTK。 与Qt和Win32相比,GTK2绘图速度非常慢。 如果你喜欢原生的外观, wxWidgets是为你制作的。