一尘不染

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

linux

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


阅读 354

收藏
2020-06-03

共1个答案

一尘不染

在Linux(台式机和笔记本电脑)上,X11服务器通常会显示图形屏幕(至少在2015年初是这种情况)。您的GUI应用程序通过套接字与该服务器通信,通常是在Unix套接字(例如)上本地进行的/tmp/.X11-unix/X0。X11服务器通常是Xorg

对于某些嵌入式设备,例如Android手机或某些小工具(汽车,汽车或医疗设备行业中的GPS),则有所不同(DirectFB帧缓冲设备 -台式机上的X11服务器使用的…)

一些发行版正在切换到Wayland(或者也许是Mir)。由于我不太了解,因此无法解释细节。在AFAIU中,仍然涉及一些服务器(例如Xorg,它是与图形卡通信的唯一的用户级软件组件)和一些协议,并且主要的工具包(例如Qt和GTK)也已适应它们(因此,如果您为Qt或GTK,您无需关心这些细节,但应该升级工具包。

图形工具箱(Qt,Gtk)通过某些特定协议(例如,用于X11的X Window
System协议
)与X11服务器(或Wayland)进行交互。由于历史原因,这些协议非常复杂,实际上需要遵循某些约定,例如EWMH

X11今天不像上个世纪那样被使用。特别是X11
服务器端绘制功能(例如Xlib的XDrawLineXDrawText)在今天很少使用,因为该工具包正在绘制像素图图像客户端并将其发送到服务器。

注意,您可能不考虑为应用程序提供GUI界面,而是提供Web界面(例如,使用libonionWt,....之类的库);然后您的应用程序将变成专用的Web服务器,并且用户将通过浏览器(在其台式机/笔记本电脑/平板电脑/电话中)与您的应用程序进行交互。

实际上,用户界面是如此复杂,以至于您确实应该为其使用一些工具包(如果使用C
++进行编码,则为Qt)。从头开始编码(甚至在XlibXCB之上,对于X11)也需要花费大量的时间。

X11之上还存在其他一些小部件工具包,例如FOX工具包FLTK(但其中大多数功能比Qt或GTK少得多)。

2020-06-03