Qt 报错qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ in ““【已解决】

报错qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""

一、问题描述

    1. 使用linuxdeployqt打包Qt程序,在一台电脑上正常运行,拷贝到另一台电脑上报错:
bash 复制代码
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    1. 打开qtcreator或其他Qt程序,报如上错误.

解决qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "":https://blog.csdn.net/Mr_guocxy/article/details/139812895

解决qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "":https://blog.csdn.net/sksukai/article/details/107325930

二、解决方案

问题原因是没有找到相关库,或者相关库的依赖有问题。

    1. 设置环境变量,使程序可找到libqxcb.so
bash 复制代码
export QT_QPA_PLATFORM_PLUGIN_PATH=/xxx/qt的安装目录/plugins/platforms
    1. 可使用qt.conf文件,指定相关路径Plugins = plugins
      如果使用linuxdeployqt,可能会自动生成 (测试了不加-qmake选项,会自动生成qt.conf,如有兴趣可继续深入linuxdeployqt源码).
bash 复制代码
# Generated by linuxdeployqt
# https://github.com/probonopd/linuxdeployqt/
[Paths]
Prefix = ./
Plugins = plugins
Imports = qml
Qml2Imports = qml

三、关于qt.conf

官方文档推荐使用qt.conf

  • 所有Qt图形用户界面(GUI)应用程序都需要一个实现Qt平台抽象(QPA)层的插件。对于Linux/X11系统,平台插件的名称是libqxcb.so。此文件必须位于您的发行版目录下的特定子目录中(默认为platforms)。或者,也可以按照下文所述,调整Qt用于查找其插件的搜索路径。
    Qt插件的搜索路径(以及其他一些路径)是硬编码到QtCore库中的。默认情况下,第一个插件搜索路径将被硬编码为/path/to/Qt/plugins。如上所述,使用预定路径存在某些缺点,因此您需要检查各种替代方案以确保找到Qt插件:使用qt.conf。这是推荐的方法,因为它提供了最大的灵活性。
    1. 作用: qt.conf 文件来覆盖路径或指定要传递给平台插件的参数

qt.conf 文件可用于覆盖编译到 Qt XML 库中的硬编码路径。这些路径可通过QLibraryInfo 类访问。如果没有qt.conf ,QLibraryInfo 中的函数将返回这些硬编码路径;否则,它们将返回qt.conf 中指定的路径。如果没有qt.conf ,Qt XML 库将使用硬编码路径来查找插件、翻译等。这些路径可能不存在于目标系统中,也可能无法访问。因此,您可能需要qt.conf 来让 Qt XML 库在其他地方查找。

    1. 位置,QLibraryInfo 将从以下位置之一加载qt.conf:
  • :/qt/etc/qt.conf 使用资源系统
  • 在 macOS 上,在应用程序捆绑包内的资源目录中, assistant.app/Contents/Resources/qt.conf
  • 包含应用程序可执行文件的目录中,即QCoreApplication::applicationDirPath() +QDir::separator() + "qt.conf"
    1. 文件参数:使用qt.conf 文件中指定的绝对路径。所有路径都相对于Prefix 。在 Windows 和 X11 上,Prefix 相对于包含应用程序可执行文件的目录。在 macOS 上,Prefix 与应用程序捆绑包中的Contents 相对。
相关推荐
故事和你9112 小时前
洛谷-【图论2-1】树4
开发语言·数据结构·c++·算法·动态规划·图论
故事和你9112 小时前
洛谷-【图论2-1】树1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
段ヤシ.12 小时前
回顾Java知识点,面试题汇总Day5(持续更新)
java·开发语言
不会C语言的男孩12 小时前
C++ SLTL编程
java·开发语言·c++
java修仙传12 小时前
Java 实习日记:从业务表关系到节点价格分析接口改造
java·开发语言·实习
qq_4523962312 小时前
第十四篇:《JMeter插件扩展:自定义函数与第三方插件》
开发语言·python·jmeter
敲代码的嘎仔12 小时前
力扣高频SQL基础50题详解
开发语言·数据库·笔记·sql·算法·leetcode·后端开发
码农-阿杰12 小时前
Java 线程等待唤醒机制深度解析:synchronized、ReentrantLock、LockSupport 底层实现对比
java·开发语言·c++
赤水无泪12 小时前
Qt 全模块汇总列表
开发语言·qt
yong999013 小时前
MATLAB仿真计算电磁波回波信号的技术路径与实现指南
开发语言·matlab