与Windows和OS X集成的方式相比,GTK和Qt如何与Linux集成?

The*_*ade 3 c c++ linux gtk qt

根据我的理解,Windows和OS X上的Qt和GTK只是本机GUI库的包装,就像它围绕Cocoa的OS X,以及围绕Win32的Windows.但是,我的问题是,它们如何与Linux集成?桌面环境开发人员是否必须为Qt或GTK实现特殊库,或者它是如何工作的?我环顾四周,但我找不到答案.

and*_*abs 6

还有一些注意事项.

GTK +和Qt都不使用Windows和OS X的本机小部件.它们使用本机API来近似外观,但内部一切都是自定义的.

GTK +和Qt负责并定义Linux上程序可用的主题.桌面环境通常提供了一种为所有应用程序全局更改主题的方法,但是如何完成此操作由GTK +和Qt定义.例如,GTK + 3通常用于~/.config/gtk-3.0/settings.ini存储此信息(并且此文件有一个编程API).

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进行文本布局(实际上将文本块排列成行和段落)和绘图(Pango与cairo集成); 我相信Qt也使用它自己(这次我不确定).

我写了一段时间X11的功能.