你最好的库创建GUI(gtk,qt,win32 api等)?

时间:2010-10-29 00:46:01

标签: c++ windows gtk

在您看来,在 Windows 中创建gui的最佳方法是什么?用gtk或win32 api?

你推荐GTK for windows吗?对吗?不是吗?为什么?

10 个答案:

答案 0 :(得分:20)

如果你只为窗户制作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 = 54 kb; Win32 Api = 6.5 kb;

答案 1 :(得分:16)

让我们看看。

  • Win32非常低级,基于C,并且难以使用。
  • MFC被认为已过时。
  • 使用.NET的C#(或C ++)可能是Windows特定开发的主要选择。
    • 将代码移植到其他平台(Mono)甚至有半局限的方式。
  • Java非常适合“只运行”的非常独立于平台的代码。抱歉,你说的是C ++。
  • QT相对平台无关。
  • GTK +,当然,虽然我个人对它没有多少经验。

就个人而言,如果我使用特定于Windows的东西,我会使用.NET - Visual Studio中的工具非常强大,而且它是一个非常全面的套件。

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

答案 2 :(得分:13)

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

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

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

我不推荐GTK + / gtkmm(GTK +的C ++包装器) for Windows ,因为你没有看到本机的Windows外观,在你的开发者机器上设置它是相当烦人的还会拖拽必须在用户计算机上安装的大量依赖项。这实际上是一个遗憾,因为特别是gtkmm有一个非常漂亮的类层次结构和设计。可能是设计最好的GUI库之一:)

那说,我会推荐什么?无论是Qt还是wxWidgets。两者都是用(相当现代的)C ++编写的,积极开发,具有良好的库设计,运行多平台并提供许多功能。在任何情况下,请使用答案中列出的一些库,并查看哪一个可以让您轻松完成您想要做的事情:)

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

答案 5 :(得分:4)

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

gtk有自己的外观,因此用户端没有ui元素的蒙皮(使用windows样式)。但是我喜欢用它来编程。

win32,mfc,.net主要限于ms visual studio,而gtk很难用于vs。

你应该看看win32,.net,gtkmm和qt。只是尝试用它们编写和编译一个简单的hello world程序

win32的好处:

  • 原生Windows代码

缺点:

  • 没有课程,只有c带手柄(非常糟糕)
  • 在我看来非常糟糕的记录

上涨的gtk(mm):

  • 易于学习/编程
  • 好记录

缺点:

  • 以某种方式难以安装开发文件
  • 没有原生窗户看

答案 6 :(得分:4)

我个人更喜欢Qt,但这实际上取决于你想要制作什么样的用户界面。

反对Win32:

  • 低水平,高复杂度来完成琐碎的事情。你必须做一切

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

Pro Qt:

  • 好看的图形用户界面

  • 可以通过创建样式表来轻松改变外观

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

  • 漂亮的布局系统

  • 与Visual Studio IDE集成

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

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

  • 相对宽松的许可(LGPL)

  • Qt Designer - 可用于表单设计的WYSIWYG设计工具

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

反对Qt:

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

Pro WPF:

  • 如果您想要新Windows平台的新WPF功能,WPF就是您的选择。

答案 7 :(得分:3)

如果您关注Linux(或Mac)兼容性,那么Qt。其他Win32。

答案 8 :(得分:1)

您可能想尝试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
个人经历

答案 9 :(得分:0)

对于平台无关的开发,我建议使用Qt而不是当前的GTK。与Qt和Win32相比,GTK2绘图速度非常慢。如果您喜欢原生外观,wxWidgets就是为您制作的。

相关问题