Qt 平台(QPA)相关API实现细节分析记录。

通过读取 Qt5 实现了解到: 各个桌面平台适配统一都是通过 QPlatformIntegration 加载对应平台后端插件实现的

比如linux  桌面端 X11/xcb 接口的剪切板实现:

QGuiApplication 加载QPlatformIntegration   对应QPA平台后端 调用 src/plugins/platforms/xcb/qxcbmain.cpp 中create 实现集成。

然后通过 QXcbClipboard 实现抽象的QClipboard相关操作

进一步分析源码,发现 plugins/platforms/xcb/qxcbclipboard.cpp  实现调用xcb_get_propert_value 和读取系统存储的selection (值:_QT_SELECTION为Qt内部使用)并调用xcb_convert_selection 转换为CLIPBOARD 即系统剪切板实现。并且在Qt库中会自行判断当前进程是否拥有该selection所有权,如果有则不从系统selection获取,直接从缓存获取。