![如何在 C++ 中创建一个简单的 GUI;没有 Qt、Gtk 或 Mondo?](https://linux22.com/image/1012570/%E5%A6%82%E4%BD%95%E5%9C%A8%20C%2B%2B%20%E4%B8%AD%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%20GUI%EF%BC%9B%E6%B2%A1%E6%9C%89%20Qt%E3%80%81Gtk%20%E6%88%96%20Mondo%EF%BC%9F.png)
新手使用 Ubuntu 18.04 LTS
我来自简单的 Windows 世界,我正在尝试编写一个 Windows 窗体对话框应用程序。在编写代码时,我发现我们可以在 Mondo、Qt、Gtk 和 Tkintker 之间进行选择。但是,我也在寻求对 Linux 应用程序(如 FireFox)如何显示 GUI 的理解?我的意思是,我确信这些应用程序使用了 Mondo、Qt 和 Gtk 出现之前就存在的东西,对吗?
有人知道一个用 C++ 编写的简单 github 项目吗?希望简单意味着 5 行代码,因为说 Hello World 并不需要太多。
我尝试安装 5 年前的帖子中提到的 ubuntu-sdk-ide,但是,安装后我尝试启动它,但它只显示“QtCreator,容器后端返回未知错误状态。这是一个错误,不应该发生,请联系开发人员。”
注意:ubuntu-sdk 在这里并且说它对于 14.04 是安全的。并且当前是 18.04,因此任何重复的帖子都会指向损坏的 14.04,并且它没有说明像 FireFox 这样的实际应用程序使用什么。 https://docs.ubuntu.com/phone/en/platform/sdk/installing-the-sdk
答案1
- 大多数应用程序都是基于 Gtk 和 Qt 等 GUI 工具包构建的。这些工具包早期的大量开发都是由此类应用程序推动的。
- 其中许多工具包已有二十多年的历史,因此它们早于当今使用的大多数应用程序。
- 这些工具包本身(或者至少是它们在 X11 中的实现)都是基于 Xlib 构建的。您可以尝试遵循以下 Xlib 教程:https://tronche.com/gui/x/xlib-tutorial/但你很有可能会遇到一些不起作用的东西。Xlib 开发是极其挑剔。至少,您会逐渐意识到 Gtk 和 Qt 等工具包提供了多少抽象。从 Windows 世界来看,这些工具包更类似于 Win32 GUI 开发,而不是 Xlib 开发。
这些都是事实,我将以推测作为结论,因为 OP 似乎对 Firefox 特别感兴趣:我相信 Firefox 实际上是直接在 X11 中构建的,或者更具体地说,它使用自己的内部 GUI 工具包。虽然它源自 Netscape Navigator(早于 Gtk 和 Qt 的普遍使用),但 Navigator 似乎使用了 Motif(一个更老的工具包,它本身建立在名为 X-Toolkit 的库之上),而 Navigator -> Firefox(或早期称为 Phoenix)的主要变化之一是该界面的丢失。这发生在 Gtk 和 Qt 等现代工具包激增的时候,我怀疑Firefox 开发人员没有选择立场,而是采取了自己的做法。