据我了解,Windows 和 OS X 端的 Qt 和 GTK 只是原生 GUI 库的包装器,就像 OS X 包装 Cocoa 和 Windows 包装 Win32 一样。但是,我的问题是,它们如何与 Linux 集成?桌面环境开发人员是否必须为 Qt 或 GTK 实现特殊的库,或者它是如何工作的?我环顾四周,但我真的找不到答案。
最佳答案
一些进一步的说明。
GTK+ 和 Qt 都没有使用 Windows 和 OS X 的本地小部件。它们近似使用本地 API 的外观和感觉,但在内部一切都是自定义的。
GTK+ 和 Qt 负责并定义可供 Linux 上的程序使用的主题。桌面环境通常提供一种方法来全局更改所有应用程序的主题,但如何完成由 GTK+ 和 Qt 定义。例如,GTK+ 3 通常使用 ~/.config/gtk-3.0/settings.ini
来存储此信息 (and there is a programmatic API to this file)。
Qt 通过 QGtkStyle 为 GTK+ 2 主题搭建了桥梁,KDE 开发人员为 GTK+ 2 和 GTK+ 3 维护了他们的 Oxygen 主题版本。(前面的句子将来可能会改变,尤其是现在 GTK+ 2 已经死了。 )
更新 1:Unix 系统只提供了一种方法来保留屏幕的矩形区域以执行您想要的操作,包括绘制(如绘制位图图像)。绘图(如绘图形状)是手工完成的。 GTK+ 使用一个名为 cairo 的库来进行绘图;我相信 Qt 是自己编写的(QPainter?)。 Windows 和 OS X 都提供绘图 API(Windows 有几个;OS X 有 Core Graphics)。 (X11 确实有绘图原语,但我认为它们的表现力不足以用于现代 2D 图形;我不知道……)
这同样适用于字体渲染,尽管现代 Unix 系统倾向于将其字体渲染基于一些普遍接受的基础库(freetype、fontconfig、fribidi、harfbuzz)。 GTK+ 使用 Pango 进行文本排版(实际上是将文本 block 排列成行和段落)和绘图(Pango 与 cairo 集成);我相信 Qt 也使用它自己的(这次我不确定)。
关于c++ - 与 Windows 和 OS X 集成相比,GTK 和 Qt 如何与 Linux 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885588/