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 相对。
相关推荐
蘑菇小白7 分钟前
Linux多线程开发
linux·开发语言·线程
2601_9669496518 分钟前
Python 实战:如何统计五档盘口买卖盘总挂单量?附计算公式与代码
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈陈序员1 小时前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 发布评论
java·开发语言·交友
屈冠成1 小时前
ShopXO商城系统测试报告
开发语言·spring·maven·lua
多弗朗皮卡丘1 小时前
C++STL之空间配置器
开发语言·c++·内存池·空间配置器
tommyjiatong1 小时前
什么是PHP漏洞
开发语言·php
CodeYp20191 小时前
第19讲:封装红黑树实现 mymap 和 myset
开发语言·c++·红黑树
Quz2 小时前
QML 字体度量与文本度量:FontMetrics 与 TextMetrics
qt
Quz2 小时前
QML 字体加载:FontLoader 与 FontInfo
qt