据我所知,Windows和OS端的Qt和GTK只是本机GUI库的包装器,就像OS封装在Cocoa上,而Windows则包装在Win32上。然而,我的问题是,它们如何与Linux集成?桌面环境开发人员是否必须为Qt或GTK实现特殊的库,或者如何工作?我环顾四周,却找不到答案。
发布于 2015-11-24 14:21:17
一些进一步的注意事项。
GTK+和Qt都不使用Windows和OS的本地小部件。它们与使用本机API的外观相似,但在内部一切都是自定义的。
GTK+和Qt负责并定义Linux上的程序可用的主题。桌面环境通常为所有应用程序提供一种全局更改主题的方法,但是这是由GTK+和Qt定义的。例如,GTK+ 3通常使用~/.config/gtk-3.0/settings.ini存储此信息(并且这个文件有一个编程API。)。
Qt通过QGtkStyle为QGtkStyle 2主题搭建了一座桥梁,KDE开发人员为GTK+ 2和GTK+ 3维护了氧气主题的版本。(前一句可能会在将来发生变化,尤其是现在GTK+ 2已经死了很久了。)
更新1:Unix系统只提供一种方法来保留屏幕上的矩形区域来执行您想要的操作,包括绘图(如绘制位图图像)。绘图(如在绘图形状中)是手工完成的。GTK+使用一个名为cairo的库进行绘图;我相信Qt编写了自己的(QPainter?)。Windows和OS都提供绘图API (Windows有几个;OS有)。(X11确实有绘图原语,但我认为它们的表现力不足以用于现代2D图形;我不知道.)
字体呈现也是如此,尽管现代Unix系统倾向于将它们的字体呈现建立在一些被普遍接受的基本库(freetype、fontconfig、fribidi、harfbuzz)之上。GTK+使用Pango进行文本布局(实际上将文本块排列成行和段落)和绘图(Pango与cairo集成);我相信Qt也使用它自己的(这次我不确定)。
发布于 2015-11-24 07:39:39
没有明确的答案。Linux上没有原生GUI,Windows和OSX上也没有。X11是在Linux上使用的窗口系统(这也适用于Wayland和Mir ),它是非常基础和低级的,主要负责处理输入设备和为应用程序分配窗口。它不提供任何GUI组件,如按钮或文本字段。从这个意义上说,Qt和GTK+都可以看作是“本地”Linux库。更糟糕的是,桌面环境也起了一定作用。在Gnome上,GTK+可以被看作是更“本地的”,而在KDE上则更多地是“本地的”。
https://stackoverflow.com/questions/33885588
复制相似问题