单个 Qt 应用程序可以在多个 X 显示器上打开窗口吗?

Posted

技术标签:

【中文标题】单个 Qt 应用程序可以在多个 X 显示器上打开窗口吗?【英文标题】:Can a single Qt application open windows on more then one X display? 【发布时间】:2013-01-22 09:35:47 【问题描述】:

我有一个 Qt 应用程序(在 Linux 上运行),它应该在另一台 X 服务器上打开一个额外的窗口,在远程计算机上运行。

有没有办法在 Qt 中做到这一点?

我希望避免更复杂的设置,例如 - DMX(在多个其他 X 服务器之上的虚拟 X 服务器)http://dmx.sourceforge.net/,或 - 为额外的窗口创建第二个应用程序,以及两个应用程序之间的某种通信

【问题讨论】:

程序中只能有一个QApplication对象,一个QApplication只能与一个Display对话。这是一个基本的限制。所以不,你不能在 Qt 中这样做。 谢谢,n.-m。这就是我想知道的。起初我没有看到您的答案,因为您将其添加为评论而不是答案。我想我无法避免创建第二个应用程序。 【参考方案1】:

您可以尝试生成一个新进程,并将其 DISPLAY 环境变量设置为另一个 X 服务器。

首先尝试从 bash 执行它,看看它是否有效,因为我不完全确定:

export DISPLAY=:0.0
./my_qt_application

用您的其他 X 服务器替换 :0.0

【讨论】:

有效,但并没有真正解决问题:我仍然会有两个显示器的单独进程,并且需要实现它们之间的通信。 是的,我看到了您的其他答案,但需要一些时间来阅读 QX11EmbedWidget 的文档。 你说得对,我删除了它。好吧,那么使用另一个过程将是你最好的选择。您可以尝试以某种方式直接使用 Xlib,但我怀疑它会起作用,而且不会很容易。我认为这里没有简单的解决方案。

以上是关于单个 Qt 应用程序可以在多个 X 显示器上打开窗口吗?的主要内容,如果未能解决你的问题,请参考以下文章

悬浮窗是啥,怎么开启悬浮窗?

Qt 解决程序全屏运行弹窗引发任务栏显示

Qt 如何避免打开多个相同子界面?

QT设计登录窗口,弹窗错误提示汉字输出为乱码

Qt:在 Mac OS X 上更改应用程序 QMenuBar 内容

华为mate9的悬浮窗怎么操作