0

我认为许多开始开发的学生经常会问自己如何使用漂亮友好的 GUI 构建一个漂亮的程序。好吧,我问自己,然后我在网上搜索。我看到有几个用于创建 GUI 的工具包

  • gtk 2.0
  • gtk 3.0
  • Qt
  • WxWidgets
  • Tk/Tcl

如何在我的程序中选择使用哪个?哪个更轻?在不同的编程语言中使用它们有区别吗?

还有更多用于更多专家使用,对于游戏我可以使用这个还是我必须使用其他程序作为搅拌器或统一?

PS:我也想为 Unix(Linux、Mac)和 Windows 开发我的程序。

PS2:我特别关注 C、C++,然后也关注 Python 等等,但一般都是写的。

4

2 回答 2

4

首先,使用系统上安装的工具包版本。最近的 Linux 发行版应该有Qt4.8Qt5.0GTK3.6或更高版本(GTK3.8 最近已发布)。不要使用 GTK2。

我在这里专注于用 C++ 编写 GUI(特别是在 Linux 上)

AFAIK,WxWidgets 是许多其他工具包(包括 Windows、Qt、Gtk、... Tcl/Tk 与 Tcl 脚本语言相关联。

还有FOX 工具包FLTK(都是 C++ GUI 工具包),但它们没有被广泛使用。

Qt 与 KDE 相关并被 KDE 使用。Gtk 与 Gnome 相关并被 Gnome 使用。但是您可以在 Gnome 上运行使用 Qt 的程序,或者在 KDE 上使用 GTK 运行程序。

GTK 是用 C 语言编写的,使用它自己的面向对象机制。如果您想在惯用的 C++ 中为 GTK 编写代码,请考虑使用GTKMM(GTK 之上的 C++ 包装器)。

Qt 和 GTK 都是非常强大的工具包。然而,Qt 为您提供了一个非常强大的图形视图框架(Gtk 还没有)。该框架使您能够将嵌套的图形项目放在一起,每个项目都有自己的坐标。相比之下,GTK 提供了非常强大的Text View机制,您可以在其中混合小部件和格式化文本。恕我直言,GTK 文本视图略好于QTextEdit

对于便携式游戏,您还可以考虑SDL。对于 3D 场景,您可能需要使用由 GTK 和 Qt 包装的低级OpenGL 。

如今,您可能还需要一个 Web 界面。Wt可能很有用(它具有类似于 Qt 的编程风格)。FastCGI 协议可能是相关的。有几个库可以在您的程序中嵌入 HTTP 服务器,例如libonionlibmicrohttpd

在 Linux 和 Unix 系统上(但不是 MacOSX 有Quartz)你应该理解X11背后的概念,即使它可能会被Wayland取代。

于 2013-03-30T06:40:04.387 回答
0

也许最温和的方法是使用 Python 和你最喜欢的桌面环境的原生 GUI。Python 易于编程,非常强大和灵活,并且可以很好地处理 GUI(我的 Fedora 管理工具中的大多数 GUI 都是用 Python 编写的)。对于 GUI,性能通常非常非常次要。Python 在 Windows 上也可以正常运行。

于 2013-03-30T02:03:08.810 回答