Symptoms & scope
- Qt names xcb or wayland and exits before a window appears.
- The plugin exists but cannot be loaded.
Relevant environment
Qt 5/6 application on Linux; bundled AppImage/Python environments and distribution packages may use different plugin directories.
Recognizable messages (synthetic examples)
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.Inspect the preceding dependency and plugin-path messages; this line does not name the missing library.
qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in "/opt/example/plugins"Check deployment and a forced backend before diagnosing binary compatibility.
Possible causes
These are possible explanations, not a confirmed diagnosis. Several independent faults can coexist.
- A platform-plugin dependency may be missing from the application’s own runtime.
- QT_PLUGIN_PATH or library-path overrides may mix incompatible Qt builds.
Diagnose safely
Run one command at a time in the relevant session. Read the explanation first. Uppercase placeholders need your own values; tools and privileges vary by distribution. These commands are displayed here and never executed by the website.
Check 1
Reads only variables relevant to plugin selection and library loading; missing values can return nonzero.
printenv QT_QPA_PLATFORM QT_QPA_PLATFORM_PLUGIN_PATH QT_PLUGIN_PATH LD_LIBRARY_PATHInterpret the result: A forced xcb backend or plugin directory outside the app bundle may be unintended. Absence of overrides does not establish that dependencies are complete.
Check 2
Replace with the exact plugin path named by the application. Reads ELF metadata without executing an untrusted binary; use the Wayland plugin path when relevant.
readelf -d /path/to/platforms/libqxcb.soInterpret the result: NEEDED entries identify required libraries, while RPATH/RUNPATH can explain which bundle directories are searched. This does not resolve every transitive dependency.
Evidence-guided next steps
Launch with a consistent Qt environment
If global Qt or library overrides point outside the supported runtime, save them and remove those overrides only for this application’s launch. Use its official launcher so its own Qt libraries and platform plugins remain together.
Precautions: Do not copy random libqxcb.so files between Qt versions or add a bundle’s plugin directory to every application.
Recovery / rollback: Restore the saved per-application environment or launcher; a clean one-time launch changes no global files.
Did this solution help you?
Repair the missing dependency in the correct runtime
If the named plugin dependency is genuinely missing, install the distribution package providing it for a native app, or obtain a corrected bundle from the application maintainer. For Python Qt environments, use a coherent environment matching that binding’s Qt version.
Precautions: A found plugin is not proof that all its libraries or the display connection work. Preserve the current bundle before replacing it.
Recovery / rollback: Restore the saved bundle/environment or remove only the newly installed optional dependency if nothing else now requires it.
Did this solution help you?
References & review
This guide was prepared from primary project or distribution sources and reviewed on the date shown. This is an editorial source check, not evidence that a fix was reproduced on your hardware. Diagnostic log examples are synthetic fixtures. Version-dependent details must be checked against your installed release.
- Qt: deploying plugins and compatibility checks (project or distribution documentation)
- Qt for Linux: deployment and platform plugin dependencies (project or distribution documentation)