Qt Design Studio shall use the real QUL runtime when previewing applications, instead of using qmlscene from Qt. The reason is that QtQuick might have behavior and visual differences with QUL. We want the two to produce results as similar as possible but since we cannot guarantee it, using the real QUL runtime is the only way to avoid the frustration of seeing different results when designing the application on desktop and when running it on target hardware.
The only way to achieve this is to compile the application, since QUL cannot load QML at runtime. This needs to be as transparent as possible to the user, who might not be familiar with developer tools. All required tools (CMake, compiler) shall be installed automatically and configured automatically.
From a user point of view, I should be able to run a QUL application from Design Studio without installing any third-party software manually and without changing any settings in Qt Design Studio.
On Windows, since we cannot ship MSVC, this requires QUL to be compiled with MinGW (UL-3168). Additionally, a version of QUL for desktop must be shipped with Qt Design Studio to enable this.
PM Board approval is required to ship part of QUL tools and libraries together with QDS. We do not want QDS-only users to be able to create a functional QUL application for a target device; the License Agreement might need to be updated and we might need to implement prevention measures such as a watermark.
-This feature could be based on a Docker container, which builds and runs a qmlproject using QUL tools using a pre-packed toolchain and Qt for MCUs SDKs.
This image could be part of Qt of MCUs and picked up by QDS to perform the build and run of the app. Essentially, it would load a given qmlproject and its assets from the host filesystem, build everything automatically, then start a Window with the QUL preview of the application.-
Ideally, the image should be downloadable on demand, not part of the base Qt SDK, as it could be very large. If possible, we should have a single docker image (Linux-based) that is used for all host platforms: Windows and Linux are the main priorities, and Mac OS only as a second priority. If not possible, we would need one separate docker image per host platform. MCU team would be responsible for the development and maintenance of the docker images, QDS team would do the integration with QDS to configure and automate the process when clicking the Preview button.
It was decided to go for a solution without containers, as it anyway requires third-party installations/configuration and possibly a separate commercial license.
Instead, will bundle everything needed to compile for Desktop as part of DS, and automatically create a "minified" kit for MCU desktop.
Initially, we will only support Windows and Linux, as QUL host tools and Desktop platform are currently not supported on macOS
- Packaging of needed parts from QUL with QDS (could be a separate item in Qt Installer)
- Automatic creation of a Desktop kit in QDS when the QUL package installed, for Linux and Windows
- The new Desktop MCU kit is used for preview of MCU applications in QDS, but also for code export