我开发了一个跨平台的 Qt 应用程序。现在我需要/想要在远程主机上运行它并加载 GUI 表单。
我知道有两种方法可以做到这一点:
- 在远程显示器(可能是虚拟的)上打开应用程序,控制台通过
ssh
连接到QtCreator - 使用远程 X session 运行,就像使用
ssh -X
或-Y
完成的那样。
当我通过 QtCreator 在远程设备上运行应用程序时,它会显示
QXcbConnection: Could not connect to display
当我使用 ssh -Y
连接到远程主机并运行我的应用程序时,它显示
QXcbConnection: Could not connect to display localhost:10.0
Aborted
在我的本地主机和通过 VNC 的远程主机上,应用程序运行良好。
ssh -Y user@host xclock
也可以正常工作 - 在我的本地显示器上打开它的表单。
主机系统为Ubuntu 16.04 LTS x64,目标系统为Ubuntu 16.04 LTS x86 32位。 Qt版本5.9.1
请帮助我使其工作。在最坏的情况下,我同意在 QtCreator 中看到调试控制台和附加到 QtCreator 的 gdb,但 GUI 仍然可以放置在远程显示器上。
更新: 这是关于 form.qt.io 的相关问题.
最佳答案
经过一些研究和 QtCreator 社区的帮助,我发现
方法很简单:
- 打开与启用了 X 转发的远程主机的 ssh session
ssh -X user@host
。并了解DISPLAY
变量。例如使用echo $DISPLAY
。它应该类似于localhost:10.0
。 - 将 QtCreator -> Projects -> YourConfiguration -> Run -> RunEnvironment 中的环境变量
DISPLAY
设置为 (1) 中的已知值。 - 在本地计算机上使用 GUI 运行并享受远程调试。
注意:关闭 ssh session 将使转发的显示无法访问且无效。
关于c++ - 如何使用QtCreator远程调试图形应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838027/