diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index c0b47d60cca..893bb758fa2 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "16.0.0") # The IDE version. +set(IDE_VERSION "16.0.1") # The IDE version. set(IDE_VERSION_COMPAT "16.0.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "16.0.0") # The IDE display version. +set(IDE_VERSION_DISPLAY "16.0.1") # The IDE display version. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. set(IDE_DISPLAY_NAME "Qt Creator") # The IDE display name. diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc index 71fc6cbf414..a7ddfd10c17 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc @@ -240,7 +240,7 @@ \li \uicontrol {Use CDB console} \li If a console application does not start up properly in the configured console and the subsequent attach fails, diagnose the issue by - using CDB's native console. Select this checkbox to override the + using the native CDB console. Select this checkbox to override the console set in the Windows system environment variables. Note that the native console does not prompt on application exit. \row diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index d86cdf7a1db..9010d2daea8 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -282,7 +282,7 @@ If a console application does not start up properly in the configured console and the subsequent attach fails, you can diagnose the issue by - using CDB's native console. Go to \preferences > + using the native CDB console. Go to \preferences > \uicontrol Debugger > \uicontrol CDB > \uicontrol {Use CDB console} to override the console set in the Windows system environment variables. Note that the native console does not prompt on application exit. diff --git a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc index 011ea869b2e..7ce6de9a9e1 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc @@ -461,7 +461,7 @@ \inlineimage icons/refactormarker.png \row \li Convert Function Call to Qt Meta-Method Invocation - \li Converts an invokable function call into a meta method + \li Converts an invocable function call into a meta method invocation. This applies to signals and slots in general, as well as functions explicitly marked with \c Q_INVOKABLE. For example, for the following class: @@ -499,7 +499,7 @@ } \endcode - The quick fix also works on invokable methods outside the class that are + The quick fix also works on invocable methods outside the class that are visible from the location where they are called from. For example, it rewrites diff --git a/doc/qtcreator/src/qtquick/qtquick-converting-ui-projects-to-applications.qdocinc b/doc/qtcreator/src/qtquick/qtquick-converting-ui-projects-to-applications.qdocinc index ea7b8cf70f1..80086c8f02f 100644 --- a/doc/qtcreator/src/qtquick/qtquick-converting-ui-projects-to-applications.qdocinc +++ b/doc/qtcreator/src/qtquick/qtquick-converting-ui-projects-to-applications.qdocinc @@ -20,8 +20,7 @@ \note Since \QDS 2.3.0, \QDS project wizard templates generate projects that can be built with CMake. You can open the \e CMakeLists.txt project file in - Qt Creator to continue developing the project. Also, you can use Qt Creator - to create a Qt Quick Application project that you can open in \QDS. + Qt Creator to continue developing the project. \target wizard-template-note \note Since \QDS 3.9.0, \QDS project wizard templates generate projects that @@ -54,12 +53,12 @@ show the main QML file when the application starts. \if defined(qtcreator) - The \e {Qt Quick Designer Components} module is installed when you + The \e {Qt Quick Studio Components} module is installed when you install \QDS. If you use Qt Quick Studio Components or Effects from the module in a project that you want to edit in Qt Creator, you have to build the module and install it to your Qt to be able to build your project. For more information, see - \l{Adding Qt Quick Designer Components to Qt Installations}. + \l{Adding Qt Quick Studio Components to Qt Installations}. The \l{Qt Quick Timeline} module is installed when you install \QDS. If you only install Qt Creator and Qt, remember to also select the @@ -110,7 +109,7 @@ project. \note If you get error messages related to modules, perfom the steps - described in \l{Adding Qt Quick Designer Components to Qt Installations}. + described in \l{Adding Qt Quick Studio Components to Qt Installations}. \endlist For example, if you copy the source files of the \e ProgressBar @@ -142,7 +141,7 @@ using the Qt resource system dynamically. For more information, see \l{The Qt Resource System}. - \section1 Adding Qt Quick Designer Components to Qt Installations + \section1 Adding Qt Quick Studio Components to Qt Installations Since \QDS 3.9, the Qt Quick Studio Components module is installed by default as part of the application created with \QDS. You can also install the module manually. @@ -154,7 +153,7 @@ git clone https://code.qt.io/qt-labs/qtquickdesigner-components.git \endcode - \li Install the Qt Quick Designer Components module. + \li Install the Qt Quick Studio Components module. \badcode mkdir build diff --git a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc index e422b7b3e1d..9ad8d396a78 100644 --- a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc +++ b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc @@ -369,7 +369,7 @@ \li \l {git branch} \row \li \uicontrol {Copy } - \li Copy the commit's to the clipboard. + \li Copy the commit to the clipboard. \li \row \li \uicontrol {Describe Change } @@ -1005,7 +1005,7 @@ In the \uicontrol {Git Branches} view, right-click a remote branch, and then select a merge option in the context menu. If the commit you are merging - can be reached by following the first commit's history, there is no divergent + can be reached by following the history of the first commit, there is no divergent work to merge together. To allow Git to move the branch pointer forward, select \uicontrol {Merge into (Fast-Forward)}. If you do not want to fast-forward the branch, select diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index a619b8f7892..8519fe2a84f 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,10 +4,10 @@ import qbs.FileInfo import qbs.Utilities Module { - property string qtcreator_display_version: '16.0.0' + property string qtcreator_display_version: '16.0.1' property string ide_version_major: '16' property string ide_version_minor: '0' - property string ide_version_release: '0' + property string ide_version_release: '1' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py index afb757ff421..c3ca2287b0a 100644 --- a/share/qtcreator/debugger/cdbbridge.py +++ b/share/qtcreator/debugger/cdbbridge.py @@ -130,7 +130,7 @@ class Dumper(DumperBase): val.typeid = self.from_native_type(nativeValue.type()) val.nativeValue = nativeValue val.laddress = nativeValue.address() - val.lbitsize = nativeValue.bitsize() + val.size = nativeValue.bitsize() return val def nativeTypeId(self, nativeType: cdbext.Type) -> str: diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 8ef403e829d..73ef602e9d8 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3004,6 +3004,8 @@ typename)) return self.putAddress(value.address()) + if value.size is not None: + self.putField('size', value.size // 8) if typecode == TypeCode.Function: #self.warn('FUNCTION VALUE: %s' % value) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 8cbb1ba6e3a..5b2de6e5fce 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -276,6 +276,7 @@ class Dumper(DumperBase): val.typeid = typeid #elif code == gdb.TYPE_CODE_ARRAY: # val.type.ltarget = nativeValue[0].type.unqualified() + val.size = nativeType.sizeof * 8 return val def nativeDataFromValueFallback(self, nativeValue, size): diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index c90c1327c48..2d15bae92ab 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -207,6 +207,7 @@ class Dumper(DumperBase): val.summary = summary val.lIsInScope = nativeValue.IsInScope() val.name = nativeValue.GetName() + val.size = nativeType.GetByteSize() * 8 return val def nativeListMembers(self, value, nativeType, include_base): diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 517e2803467..236c2db7ead 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -1134,6 +1134,11 @@ void MarkdownBrowser::setEnableCodeCopyButton(bool enable) access(this)->setEnableCodeCopyButton(enable); } +void MarkdownBrowser::setViewportMargins(int left, int top, int right, int bottom) +{ + access(this)->setMargins(QMargins(left, top, right, bottom)); +} + // Special If If::If( diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 651166a4f0d..824f3904b27 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -460,6 +460,7 @@ public: void setMarkdown(const QString &); void setBasePath(const Utils::FilePath &); void setEnableCodeCopyButton(bool enable); + void setViewportMargins(int left, int top, int right, int bottom); }; // Special diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 6beebd8faaa..317ae8dac5d 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -69,7 +69,7 @@ Suggested NDK and Debugger version per Qt version: | 5.15.9 - 5.15.16 | 6.2 - 6.3 | 22.1.7171670 | 8.3.0 | 11.0.5 | | | 6.4 | 23.1.7779620 | 8.3.0 | 12.0.8 | | | 6.5 - 6.6 | 25.1.8937393 | | 14.0.6 | -| | 6.7 - 6.8 | 26.1.10909125 | | 17.0.2 | +| | 6.7 - 6.9 | 26.1.10909125 | | 17.0.2 | < Qt 6.5: Mapping read from sdk_definitions.json >= Qt 6.5: Mapping read from /modules/Core.json diff --git a/src/plugins/debugger/console/console.cpp b/src/plugins/debugger/console/console.cpp index 56e3da94d73..f16cb27c0ab 100644 --- a/src/plugins/debugger/console/console.cpp +++ b/src/plugins/debugger/console/console.cpp @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -119,6 +120,7 @@ Console::Console() m_spacer->setMinimumWidth(30); m_statusLabel = new QLabel(m_consoleWidget); + StyleHelper::setPanelWidget(m_statusLabel); readSettings(); connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, diff --git a/src/plugins/debugger/enginemanager.cpp b/src/plugins/debugger/enginemanager.cpp index 5cb00e1a76a..2f4dc97fd2c 100644 --- a/src/plugins/debugger/enginemanager.cpp +++ b/src/plugins/debugger/enginemanager.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -138,6 +139,7 @@ public: { m_proxyModel->setSourceModel(sourceModel); + StyleHelper::setPanelWidget(m_engineChooser); m_engineChooser->setModel(m_proxyModel); m_engineChooser->setIconSize(QSize(0, 0)); if (hideSwitcherUnlessNeeded) diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index b1f358509de..4ca1ed05358 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -1228,6 +1228,7 @@ void QmlEnginePrivate::handleEvaluateExpression(const QVariantMap &response, QVariant bodyVal = response.value(BODY).toMap(); QmlV8ObjectData body = extractData(bodyVal); WatchHandler *watchHandler = engine->watchHandler(); + watchHandler->resetValueCache(); auto item = new WatchItem; item->iname = iname; diff --git a/src/plugins/languageclient/callandtypehierarchy.cpp b/src/plugins/languageclient/callandtypehierarchy.cpp index 71a9558f34e..dc5da0bd61e 100644 --- a/src/plugins/languageclient/callandtypehierarchy.cpp +++ b/src/plugins/languageclient/callandtypehierarchy.cpp @@ -36,6 +36,11 @@ enum { }; } +static bool sorter(const TreeItem *a, const TreeItem *b) +{ + return a->data(0, Qt::DisplayRole).toString() < b->data(0, Qt::DisplayRole).toString(); +} + template class HierarchyItem : public TreeItem { @@ -102,7 +107,7 @@ private: if (result && !result->isNull()) { for (const Result &item : result->toList()) { if (item.isValid()) - appendChild(new HierarchyItem(getSourceItem(item), m_client)); + insertOrderedChild(new HierarchyItem(getSourceItem(item), m_client), sorter); } } }); diff --git a/src/plugins/lua/bindings/gui.cpp b/src/plugins/lua/bindings/gui.cpp index 02fa73f7647..3d9e4a80a98 100644 --- a/src/plugins/lua/bindings/gui.cpp +++ b/src/plugins/lua/bindings/gui.cpp @@ -115,6 +115,7 @@ CREATE_HAS_FUNC(setFixedSize, QSize()) CREATE_HAS_FUNC(setVisible, bool()) CREATE_HAS_FUNC(setIcon, Utils::Icon()); CREATE_HAS_FUNC(setContentsMargins, int(), int(), int(), int()); +CREATE_HAS_FUNC(setViewportMargins, int(), int(), int(), int()); CREATE_HAS_FUNC(setCursor, Qt::CursorShape()) CREATE_HAS_FUNC(setMinimumWidth, int()); CREATE_HAS_FUNC(setEnableCodeCopyButton, bool()); @@ -128,6 +129,12 @@ void setProperties(std::unique_ptr &item, const sol::table &children, QObject item->setContentsMargins(margins->left(), margins->top(), margins->right(), margins->bottom()); } + if constexpr (has_setViewportMargins) { + sol::optional margins = children.get>("viewportMargins"sv); + if (margins) + item->setViewportMargins(margins->left(), margins->top(), margins->right(), margins->bottom()); + } + if constexpr (has_setCursor) { const auto cursor = children.get>("cursor"sv); if (cursor) diff --git a/src/plugins/lua/meta/gui.lua b/src/plugins/lua/meta/gui.lua index adfd7676df1..e74a4fe31c9 100644 --- a/src/plugins/lua/meta/gui.lua +++ b/src/plugins/lua/meta/gui.lua @@ -232,6 +232,7 @@ local markdownBrowser = {} ---@class (exact) MarkdownBrowserOptions : WidgetOptions ---@field enableCodeCopyButton? boolean Enable or disable the code copy button +---@field viewportMargins? integer[] Four integers representing left, top, right and bottom margins local markdownBrowserOptions = {} ---@param options MarkdownBrowserOptions diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index c345afc82a6..d2ce723f6fc 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -594,7 +594,7 @@ void RunControlPrivate::startPortsGathererIfNeededAndContinueStart() return; } - QTC_ASSERT(device, continueStart(); return); + QTC_ASSERT(device, initiateStop(); return); const Storage portsStorage; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 5c606e1a8a6..390499e569c 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -78,6 +78,7 @@ private: QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) : RunConfiguration(target, id) { + setUsesEmptyBuildKeys(); qmlViewer.setSettingsKey(Constants::QML_VIEWER_KEY); qmlViewer.setLabelText(Tr::tr("Override device QML viewer:")); qmlViewer.setPlaceHolderText(qmlRuntimeFilePath().toUserOutput()); diff --git a/src/plugins/remotelinux/genericdeploystep.cpp b/src/plugins/remotelinux/genericdeploystep.cpp index b1faf9c6b39..706d60cd12e 100644 --- a/src/plugins/remotelinux/genericdeploystep.cpp +++ b/src/plugins/remotelinux/genericdeploystep.cpp @@ -156,10 +156,7 @@ GroupItem GenericDeployStep::transferTask(const Storage &storag .arg(FileTransfer::transferMethodName(preferredTransferMethod), FileTransfer::transferMethodName(transferMethod), deviceConfiguration()->displayName()); - if (transferMethod == FileTransferMethod::GenericCopy) - addWarningMessage(message); - else - addProgressMessage(message); + addProgressMessage(message); m_emittedDowngradeWarning = true; } transfer.setTransferMethod(transferMethod); diff --git a/src/plugins/screenrecorder/ffmpegutils.cpp b/src/plugins/screenrecorder/ffmpegutils.cpp index 419e558ae28..1ebff41e45a 100644 --- a/src/plugins/screenrecorder/ffmpegutils.cpp +++ b/src/plugins/screenrecorder/ffmpegutils.cpp @@ -137,18 +137,6 @@ bool CropSizeWarningIcon::needsWarning() const namespace FFmpegUtils { -static QVersionNumber parseVersionNumber(const QByteArray &toolOutput) -{ - QVersionNumber result; - const QJsonObject jsonObject = QJsonDocument::fromJson(toolOutput).object(); - if (const QJsonObject program_version = jsonObject.value("program_version").toObject(); - !program_version.isEmpty()) { - if (const QJsonValue version = program_version.value("version"); !version.isUndefined()) - result = QVersionNumber::fromString(version.toString()); - } - return result; -} - static ClipInfo parseClipInfo(const QByteArray &toolOutput) { ClipInfo result; @@ -248,6 +236,18 @@ using namespace ScreenRecorder::FFmpegUtils; namespace ScreenRecorder::Internal { +static QVersionNumber parseVersionNumber(const QByteArray &toolOutput) +{ + QVersionNumber result; + const QJsonObject jsonObject = QJsonDocument::fromJson(toolOutput).object(); + if (const QJsonObject program_version = jsonObject.value("program_version").toObject(); + !program_version.isEmpty()) { + if (const QJsonValue version = program_version.value("version"); !version.isUndefined()) + result = QVersionNumber::fromString(version.toString()); + } + return result; +} + void FFmpegOutputParserTest::testVersionParser_data() { QTest::addColumn("ffprobeVersionOutput"); diff --git a/tests/manual/boot2qt/README.md b/tests/manual/boot2qt/README.md index b41810f4af2..b152a07fc5b 100644 --- a/tests/manual/boot2qt/README.md +++ b/tests/manual/boot2qt/README.md @@ -1,6 +1,49 @@ +# Testing Boot2Qt with the Hardware Pool +## Installing the Requirements -### Testing Boot2Qt setup without hardware ### +On macOS, you need to have Docker Desktop installed, including the Docker CLI. + +Install the Boot to Qt Software Stack for the Qt version and device hardware +that you want to test with the Qt Online Installer + +On macOS, the installer might complain about not being able to run docker. +If that is the case, copy the command line from the dialog into a Terminal +with the Docker CLI in PATH and execute it manually. Choose `Ignore` in the +installer dialog when ready. + +## Reserving a Device + +Log into https://hw-controller.qt.io/ with your Qt Account. Choose the +appropriate device hardware, select the Qt version that matches what you +installed with the Qt Online Installer, state a reason for your device use, +choose a reservation duration, and select `Reserve`. + +The device is then provisioned and booted. When ready, make note of the device +IP address. + +## Configuring Qt Creator + +Start Qt Creator, open the device options, and add a `Boot to Qt Device`. +Give it a name, and provide the IP that you noted when reserving the device. +The user is `root`. + +Now you can open or create a project, select the corresponding Boot to Qt kit, +and build, run & debug. + +While an application is running on the device, you can use a VNC[^vnc] viewer to +connect to the apps UI with the device's IP. + +[^vnc]: The creation of the VNC connection depends on setting + `QT_QPA_PLATFORM=vnc` in `/etc/default/qt` on the device. That should + be enabled by default for devices created with the web interface. + +## Releasing the Device + +When you are finished with testing, release the reservation of the device +in the web interface. + +# Testing Boot2Qt setup without hardware ### It is possible to test Boot2Qt without hardware on a plain Linux host system. @@ -8,12 +51,12 @@ Note: You need an ssh-accessible "root" user on the machine, open X access, and must be willing to use it. This is not meant for production environments! -# Prepare your machine +## Prepare your machine ssh-copy-id -i ~/.ssh/id_??????.pub root@localhost xhost + -# Get appcontroller source and build +## Get appcontroller source and build git clone ssh://codereview.qt-project.org/qt-apps/boot2qt-appcontroller @@ -21,12 +64,12 @@ cd boot2qt-appcontroller /path/to/qt-base/bin/qt-cmake ... ninja ... -# Copy binary to "proper" location +## Copy binary to "proper" location sudo ln -s `pwd`/appcontroller /usr/bin/appcontroller -# Set up "Boot to Qt" Device in Creator +## Set up "Boot to Qt" Device in Creator Ensure the "Boot to Qt" plugin is enabled @@ -36,7 +79,7 @@ Device Address: 127.0.0.1 Press "Apply" -# Create a suitable Kit +## Create a suitable Kit Clone your standard kit for normal local work Change the "Run Device" to LocalHostForBoot2Qt @@ -46,11 +89,11 @@ Press "Apply" The kit will have a warning the "Device type is not supported by Qt version" - that's ok. -# Create a test project +## Create a test project File -> New Project -> Qt Quick Application -# Tweak project settings +## Tweak project settings Deployment method: "Deploy to Boot to Qt Target" @@ -60,12 +103,12 @@ Run Environment: Add LD_LIBRARY_PATH=/path/to/qt-base/lib "Executable on Device" may be red at that stage, it shold get black after a successful build -# Build +## Build Ctrl-B -# Test +## Test At that stage, the program should be runnable, debuggable (C++, QML, and combined QML/C++), and Qml-Profilable diff --git a/tests/manual/qnx/README.md b/tests/manual/qnx/README.md new file mode 100644 index 00000000000..0655e9660c5 --- /dev/null +++ b/tests/manual/qnx/README.md @@ -0,0 +1,57 @@ +### Testing QNX setup without hardware ### + +It is possible to test QNX without hardware on a plain Linux host system. + +Note: This doc assumes you have: +1.1 An access to actual qnx target device available via IP address that has Qt installed. +1.2 A QNX SDP +1.3 A QNX license (placed under: $HOME/.qnx/license/licenses). + +# Installations + +2.1 Unpack qnx710-windows-linux-20240417.tar.xz in ~/qnx folder. +2.2 Install 'chrpath' on your linux host. +2.3 Install locally Qt for QNX via Qt installer / maintenance tool. + Install matching version of the one that is on the remote device. + Point Qt installer to ~/qnx/qnx710-windows-linux-20240417/qnx710 for the SDP dir. +2.4 Ensure you have cmake 3.21.1 at minimum installed on your host. + +# Creator configuration + +3.1 Ensure your installed Qt for QNX are detected: + Preferences | Kits | Qt Versions should list installed versions. + Preferences | Kits | Kits should list installed kits (won't be used!). + If not, try: Preferences | Kits | Qt Versions | Link with Qt... + and point to the installed Qt for QNX master dir. +3.2 Create QNX device, pointing to the IP address from 1.1: + Preferences | Devices | Add | QNX Device +3.3 Run device Test - it should already pass. +3.4 Ensure the right "Access via" value for the created QNX device: + it should be: Direct (not Local PC). +3.4 Add QNX SDK: + Preferences | SDKs | QNX | Add... + Point into ~/qnx/qnx710-windows-linux-20240417/qnx710/qnxsdp-env.sh + This should fill the QNX page with content and you should see 3 new buttons: + Create Kit for aarch64le, Create Kit for x86_64 and Create Kit for armle-v7. +3.5 Create a kit: press one of the buttons from the previous point. + Ensure it matches the architecture of the remote device. + You won't see any feedback, but when you switch to the Kits | Kits tab, + you should see a new kit created. +3.6 It might happen that the created kit doesn't have matching + compiler/debugger/Qt version selected. Ensure they have something like: + Compiler: QCC for x86_64 - qnx7 (64-bit ARM) + Debugger: Debugger for QNX 7.1.0 ARMv8 + Qt version: Qt 6.8.2 for QNX 7.1 ARMv8 + +# Create a qnx project + +4.1 Try creating a new project: + File | New Project... | Application (Qt) | Qt Console Application + and select the Kit created in point 3.5 +4.2 Go to project run settings and fill up the "Alternate executable on device:" field. + Check "Use this command instead" on the right side first to enable the line. + Fill it with "/tmp/bin/[your_target_name]" by typing. + This should match the table in the "Deployment" section above. + Don't worry that it stays red, indicating it's not an existing path. +4.3 The project should build, deploy and run on remote now. +