首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt X11应用程序配置为始终在最前面

Qt X11应用程序配置为始终在最前面
EN

Stack Overflow用户
提问于 2012-06-01 19:57:50
回答 2查看 1.9K关注 0票数 1

我目前正在尝试在远程XServer (Exceed)上执行Qt X11应用程序。为了使应用程序窗口始终位于其他显示的顶部,我使用以下语句:

代码语言:javascript
运行
复制
MainWindow->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool);

如果我在本地Windows7和Ubuntu操作系统上执行我的应用程序,它将作为"Always on Top“应用程序执行。但是,当我将显示信息路由到远程XServer (Exceed x64 v14)时,它开始执行时没有"Always on Top“属性。当它失去焦点时,它就会落后于其他显示器。

是否需要在Qt代码或Exceed产品中进行进一步的配置?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 18:50:25

首先,让我们去掉一些术语。您设置的"Always on Top“属性不是X11的一个功能,而是一组标准的所谓窗口管理器”提示“的一部分,作为客户端间通信手册和扩展窗口管理器提示的一部分指定。

X11不处理窗口在屏幕上的位置,这是窗口管理器所做的。在一个典型的X11系统上,你有一个符合ICCCM/EWMH的窗口管理器,它控制着所有的窗口,一切都很好。这也适用于所有类型的转发,因为对于X11服务器来说,客户端连接的方式并不重要,客户端之间的所有通信都通过X11服务器进行。

现在,您使用的是Exceed,这是一个运行在Microsoft Windows桌面之上的X11服务器。Windows的所有窗口管理都是自己完成的,像"Always-On-Top“这样的东西是Windows窗口管理代码的策略的一部分。但是,由于X11没有定义策略,而只是定义了方法,任何类型的ICCCM/EWMH信息都不会传递给窗口管理。Windows看到的所有窗口都是由Exceed为各个客户端创建的无特色的顶级窗口。

现在你可以在Exceed中启动一个Windows,但是这个WM只存在于X11中,而且由于X11没有定义像"Always- on - top“这样的策略,所以无法告诉Windows,一个窗口实际上应该保持在顶部。你也可以在“全屏”模式下启动Exceed,它会打开一个完整的窗口,在这个窗口中,所有的X11客户端都在自己的小桌面上运行。在其中运行的WM将仅管理其中的X11客户端,但同样不能将其信息传递给Windows。

您实际上需要的是某种旁路,它将并行连接到Exceed,并使Windows窗口属性(策略)与X11端的ICCCM/EWMH保持同步。这样的程序是完全可行的,但我不知道有任何程序可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-06-01 20:05:02

X11转发不支持此功能

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10849831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档