远程调试 qt.qpa.xcb: could not connect to display, echo DISPLAY为空[已解决]_功夫小象的博客-CSDN博客
参考上述连接,我遇到两种情况
第一种情况:export QT_DEBUG_PLUGINS=1,如果提示缺少动态链接库,具体可参考以下方法
qt.qpa.xcb: could not connect to display :xxx:0.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
说明此时不缺少动态链接库,而是连接不上设置的display,网上很多说把环境变量中的display改成 export DISPLAY=本地IP:0.0,我这里行不通。
这里是基于X11转发的情况,首先查看ssh是否开启X11转发,
grep X11 /etc/ssh/sshd_config
有如下显示,说明已经开启X11转发,此时注意看第二行,说明端口号是从10开始的
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
# X11Forwarding no
因此,设置环境变量如下即可。
export DISPLAY=localhost:10.0
或者,如果vscode中也配置了X11,可以看一下RemoteX11(SSH)的输出,其中包括:
x11 accept: 127.0.0.1,则也可以设置为:export DISPLAY=127.0.0.1:10.0,但是注意,后面的端口号都是10.0,不是0.0
如何你的linux系统安装了X11转发的相关软件,如下,则可以在终端直接输入:xclock,验证是否成功。
sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
也可以用以下python代码运行,验证QT程序是否可运行。
(base) user@server1:~$ python
Python 3.9.7 (default, Sep 16 2021, 13:09:58)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt5.QtWidgets import QApplication, QLabel
>>> app = QApplication([])
没有报错即修改成功。
附上如何在SSH中直接开启X11的连接,可供参考。
在SSH会话中如何实现 X11 Forwarding_dingdingfish的博客-CSDN博客_x11forwarding服务器X11图形界面转发配置——全网最简教程_痴澳超的博客-CSDN博客_x11转发配置