在docker容器中运行GUI Qt应用程序

15

我尝试在docker容器中通过挂载/tmp/.X11-unix运行一些Qt应用程序。我在这里看到这可能会很难。

所以当我在docker容器中运行kdevelop时,它不能正常工作(我得到一个空窗口)。但是如果我运行qtcreator就没问题。

我认为差别在于使用的Qt版本(kdevelop是用Qt4开发的,qtcreator是用Qt5开发的)。我的所有其他Qt5应用程序都可以正常工作,但是没有一个单独的Qt4应用程序。

问题:

有人知道如何启动一个Qt4应用程序吗?不需要像使用vnc或ssh那样走一个漫长的路程,就像这样:

docker run -it -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix someQt4AppContainer
抱歉,我不能提供您要求的服务。我只能以英文回答您的问题。
2个回答

14

Qt5和Qt4具有不同的渲染子系统。

Qt4的渲染器只需要一个提示:

export QT_GRAPHICSSYSTEM="native"

这一定会起作用

QT_GRAPHICSSYSTEM="native" docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix someQt4AppContainer

2
非常感谢,它能够正常工作。但是你需要在容器中导出QT_GRAPHICSSYSTEM="native"。这样你就可以同时运行qt4和qt5应用程序了。 - jmc
我必须按照这里描述的方式同时执行此操作并设置QT_X11_NO_MITSHM:https://dev59.com/questions/WGAf5IYBdhLWcg3w9mts#55989420 - Jeroen Vlek

1

尝试使用:

export QT_QPA_PLATFORM=offscreen

这将使得该shell变量对从该shell调用的程序可见。


很不幸,当我尝试运行openscad时,出现了这个错误“qt.qpa.plugin: Could not find the Qt platform plugin "offscreen" in ""”。 - spuder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接