diff options
-rw-r--r-- | src/designer/src/lib/shared/qdesigner_utils.cpp | 18 |
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 dfd887f91..18668c4a2 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> @@ -713,7 +716,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; |