Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建GUI的最佳库(gtk、qt、win32 api等)?_C++_Windows_Gtk - Fatal编程技术网

C++ 创建GUI的最佳库(gtk、qt、win32 api等)?

C++ 创建GUI的最佳库(gtk、qt、win32 api等)?,c++,windows,gtk,C++,Windows,Gtk,在您看来,在Windows中创建gui的最佳方法是什么?使用gtk还是win32 api 你推荐GTK用于windows吗?对不为什么?如果您关心Linux(或Mac)兼容性,那么Qt。否则Win32。Win32 api太复杂,MFC太烦人。 我在windows中使用过MFC、win32api和Qt。在我看来,Qt是最好的。 我还没有试过GTK,所以很抱歉我对它一无所知 编辑2019:看起来所有这些选项都过时了,那么跨平台解决方案呢,您可能想试试Winforms或WPF。如果您仅限于使用C/C+

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


你推荐GTK用于windows吗?对不为什么?

如果您关心Linux(或Mac)兼容性,那么Qt。否则Win32。Win32 api太复杂,MFC太烦人。 我在windows中使用过MFC、win32api和Qt。在我看来,Qt是最好的。 我还没有试过GTK,所以很抱歉我对它一无所知


编辑2019:看起来所有这些选项都过时了,那么跨平台解决方案呢,

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




个人经历

让我们看看

  • Win32是非常低级的、基于C的,而且使用起来很笨拙
  • MFC被认为是过时的
  • 带.NET的C#(或C++)可能是Windows特定开发的主要选择
    • 甚至有半有限的方法可以将代码移植到其他平台(Mono)
  • Java非常适合于“只运行”的与平台无关的代码。对不起,你说的是C++。
  • QT是相对独立于平台的
  • 当然是GTK+,尽管我个人对此没有太多经验
就我个人而言,如果我做一些特定于Windows的事情,我会使用.NET——VisualStudio中的工具非常强大,而且它是一个很棒的包罗万象的套件


对于平台无关的东西,我使用Java,但这可能不是您选择的工具。我已经看到QT在这方面使用了很多。

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

两者都适用于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):

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

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

对于独立于平台的开发,我建议使用Qt而不是当前的GTK。与Qt和Win32相比,GTK2绘图速度非常慢。如果您喜欢原生外观,它是为您量身定做的。

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

<> P>因为您将自己限制为C++,所以我会点击.NET,因为.NET上的C++是用来作为非托管和托管世界之间的连接的。这并不意味着你不能将它用于其他类型的开发,但是考虑到语法的笨拙和无数的陷阱,我不会使用它。此外,VS的WinForms代码生成器将表单代码放入头文件中。。brrrr

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

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


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

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

针对Win32:

  • 低层次、高复杂度来完成琐碎的事情。你什么都得做

  • 如果你走这条路的话,我会推荐一本类似于《圣经》的书

专业Qt:

  • 漂亮的GUIs

  • 通过创建样式表,可以非常轻松地更改外观

  • 信号和插槽机制通知用户界面事件,如“点击按钮”等

  • 尼斯布局系统

  • 与VisualStudioIDE集成

  • > P>现代面向对象C++代码,易于理解和使用

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

  • 相对自由的许可(LGPL)

  • Qt设计器-可用于表单设计的所见即所得设计工具

  • 附带了大量的C++功能,包括XML、网络、EngEngRoad, 线程、数据库访问等

针对Qt:

  • 使用MOC的中间步骤