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

xRo*_*bot 19 c++ windows gtk

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

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

小智 21

如果你只为窗户制作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;

  • 您能解释一下为什么它这么好(除了性能)吗?特别是为什么程序变得越复杂,与其他工具包相比,它就越容易? (2认同)

Ebo*_*ike 16

让我们来看看.

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

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

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

  • Windows上的gtk应用程序看起来很糟糕,字体很难看 (4认同)
  • wxWidgets 怎么样? (2认同)

Chr*_*ian 13

你真的有很多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++编写的,积极开发,具有良好的库设计,运行多平台并提供许多功能.在任何情况下,请参考答案中列出的一些库,看看哪一个可以让你最轻松地完成你想做的事:)


M3t*_*t0r 7

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

gtk 有自己的外观,所以用户端没有 ui 元素的皮肤(使用 windows 样式)。但我更喜欢用它编程。

win32、mfc、.net 大多仅限于 ms Visual Studio,而 gtk 很难与 vs.

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

win32的优点:

  • 本机窗口代码
  • 快速地

缺点:

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

gtk(mm) 的优点:

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

缺点:

  • 安装开发文件有点困难
  • 没有本机窗口外观

  • gtk(mm) 的另一个缺点是您有很多依赖项(glib、gdk、pango 等),并且您总是需要将大量 DLL 拖到用户机器上:/ (2认同)

Sev*_*yev 6

如果您关心 Linux(或 Mac)兼容性,那么 Qt。否则Win32。


fan*_*hzh 6

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

编辑2019:看起来所有这些选项都是outdated,跨平台解决方案,反应窗口电子


Bow*_*ens 5

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


Ral*_*alf 5

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

针对 Win32:

  • 低级、高复杂度来完成琐碎的事情。你必须做任何事情

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

专业Qt:

  • 好看的图形用户界面

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

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

  • 漂亮的布局系统

  • 与 Visual Studio IDE 集成

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

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

  • 相对宽松的许可 (LGPL)

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

  • 带有丰富的其他 C++ 功能,包括 XML、网络、事件循环、线程、数据库访问等

对抗 Qt:

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

专业 WPF:

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