先决条件:我的Qt程序(MainWindow)在 FIRST Linux桌面上工作,而在 SECOND 上工作。
程序调用以下代码:
mainWindow->raise();
会怎样?我的桌面环境切换到 FIRST 桌面,并在我的应用程序上显示主窗口。
我想做什么?我的应用程序主窗口已移至当前( SECOND )桌面,并显示在此处。
Qt有可能吗?怎么办?
答案 0 :(得分:0)
Qt不支持完整的Linux DE / WM环境。虚拟桌面就像不是真正的虚拟桌面。
这是一个复杂的问题。我会尝试解释(英语不好)。
Linux X Window系统上的桌面和工作区:https://www.circuitousroot.com/artifice/programming/useful/fvwm/viewports/index.html
Qt使用xcb:https://xcb.freedesktop.org/ 这里我们有xcb连接:http://doc.qt.io/qt-5/qx11info.html#connection 如果没有其他库,这是很难的方法:仅xcb,ICCCM,EWMH ... 我的应用程序遇到了这个问题,但是稍后。我只有纯C语言的肮脏测试,并且可以正常工作。
您可以尝试使用(或查看如何实现,我在这里看到了)KWindowSystem:https://api.kde.org/frameworks/kwindowsystem/html/classKWindowSystem.html(不具有KDE依赖!!!),但是此类并不具有所有EWMH命令的所有功能。