首先,使用系统上安装的工具包版本。最近的 Linux 发行版应该有Qt4.8 或Qt5.0和GTK3.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 服务器,例如libonion或libmicrohttpd
在 Linux 和 Unix 系统上(但不是 MacOSX 有Quartz)你应该理解X11背后的概念,即使它可能会被Wayland取代。