summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-10-20 12:11:33 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-03-19 16:29:05 +0100
commitc9b04d4597713a9751b268f30744b4c3cac4ad58 (patch)
tree641f43322e92382feffe625c5c7b964ec6a60909
parentd8b0224fbfb6e9a3845c19e4ccdce2586d487884 (diff)
Qt Designer: Fix code preview not working in PySide6 on Windows
PySide6 installations do not have a proper Qt directory structure on Windows; so, uic is not found via libexec. Use the path of the application instead, which should work in all cases. Fixes error Unable to launch ...\Lib\site-packages\PySide6\bin\uic: Process failed to start: The system cannot find the file specified. Pick-to: 6.7 6.6 Change-Id: I841836a89962f4db962816453b9e99f33ffaf86b Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
-rw-r--r--src/designer/src/lib/shared/qdesigner_utils.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/designer/src/lib/shared/qdesigner_utils.cpp b/src/designer/src/lib/shared/qdesigner_utils.cpp
index 6095803ba..e914deb8f 100644
--- a/src/designer/src/lib/shared/qdesigner_utils.cpp
+++ b/src/designer/src/lib/shared/qdesigner_utils.cpp
@@ -13,7 +13,10 @@
#include <QtDesigner/taskmenu.h>
#include <QtDesigner/qextensionmanager.h>
+#include <QtCore/qcoreapplication.h>
#include <QtCore/qdir.h>
+#include <QtCore/qfileinfo.h>
+#include <QtCore/qoperatingsystemversion.h>
#include <QtCore/qprocess.h>
#include <QtCore/qlibraryinfo.h>
#include <QtCore/qdebug.h>
@@ -705,7 +708,20 @@ namespace qdesigner_internal {
{
QProcess uic;
QStringList arguments;
- QString binary = QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath) + "/uic"_L1;
+ static constexpr auto uicBinary =
+ QOperatingSystemVersion::currentType() != QOperatingSystemVersion::Windows
+ ? "/uic"_L1 : "/uic.exe"_L1;
+ QString binary = QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath) + uicBinary;
+ // In a PySide6 installation, there is no libexec directory; uic.exe is
+ // in the main wheel directory next to designer.exe.
+ if (!QFileInfo::exists(binary))
+ binary = QCoreApplication::applicationDirPath() + uicBinary;
+ if (!QFileInfo::exists(binary)) {
+ errorMessage = QApplication::translate("Designer", "%1 does not exist.").
+ arg(QDir::toNativeSeparators(binary));
+ return false;
+ }
+
switch (language) {
case UicLanguage::Cpp:
break;