// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \page studio-porting-projects.html \previouspage creator-vcs-git.html \nextpage quick-converting-ui-projects.html \title Converting Qt 5 Projects into Qt 6 Projects \QDS supports creating UIs with Qt 6 in addition to Qt 5. However, to make a project that uses Qt 5 use Qt 6, you have to be aware of a few differences and issues that are discussed in this topic. \section1 Font Loader Projects that were \l{Creating Projects}{created} with \QDS 2.1 use \c FontLoader in a way that is not supported in Qt 6. Specifically, the \c name property is read-only in Qt 6. Therefore, you must modify the \c Constants.qml file to have fonts loaded correctly. You can either remove the \c FontLoader or switch to using the \c source property instead of the \c name property. To remove the \c FontLoader, delete the following line from the \c Constants.qml file: \code readonly property FontLoader mySystemFont: FontLoader { name: "Arial" } \endcode Then, remove the following lines that contain references to mySystemFont: \code readonly property font font: Qt.font({ family: mySystemFont.name, pixelSize: Qt.application.font.pixelSize }) readonly property font largeFont: Qt.font({ family: mySystemFont.name, pixelSize: Qt.application.font.pixelSize * 1.6 }) \endcode Alternatively, you can keep the \c FontLoader and use the \c source property instead of the \c name property. If you are unsure about how to do this, you can replace the \c Constants.qml file with a new one that you create by using \QDS 2.2. \section1 Qt Quick Studio Components \l{Summary of Shapes}{Qt Quick Studio Components} are available in Qt 6, except for the \l {Iso Icon} component. It specifies an icon from an ISO 7000 icon library as a \l [QtQuickExtras] {Picture} component, which is not supported in Qt 6. Therefore, Iso Icon is also not supported in Qt 6. \section1 Qt Quick Studio Effects \l{2D Effects} are only partially supported. The following 2D effects are not available in Qt 6: \list \li Blend \li Inner Shadow \li Blur effects except: \list \li DirectionalBlur \li FastBlur \li GaussianBlur \li MaskedBlur \li RecursiveBlur \li RadialBlur \li ZoomBlur \endlist \endlist Substitutes are provided for the obsolete effects to keep Qt 5 based applications working, but the effects will not be rendered as expected. \section1 Qt Quick 3D In Qt 6, you cannot use the import \c {import QtQuick3D 1.15}, which imports a Qt 5 based Qt Quick 3D module. Qt 6 does not require a version for imports, and therefore it is not used by default. To turn a Qt 5 based project into a Qt 6 based project, you have to adjust the imports in all \c .qml files that use Qt Quick 3D by removing the version numbers. For more information about changes in Qt Quick 3D, see the \l{https://doc-snapshots.qt.io/qt6-dev/qtquick3d-changes-qt6.html} {changes file}. \section1 QML For general information about changes in QML between Qt 5 and Qt 6, see: \list \li \l{https://doc.qt.io/qt-6/obsoleteqmltypes.html}{Obsolete types} \li \l{https://doc.qt.io/qt-6/quick-changes-qt6.html}{Changes in Qt Quick} \endlist The most notable change is that Qt 6 does not require a version for imports anymore. \section1 \QDS Projects that support only Qt 6 are marked with \c {qt6Project: true} in the \c .qmlproject file. This line is added if you choose \uicontrol {Qt 6} in the wizard when creating the project. If the project file does not contain this line, the project will use Qt 5 and a Qt 5 kit by default. You can change this in the project \uicontrol {Run Settings}, where you can select \uicontrol {Qt 6} instead. Projects that use Qt 6 specific features will not work with Qt 5. This means that projects that are supposed to work with both Qt 5 and Qt 6 require versions for their imports. Therefore, if you want to use Qt Quick 3D, using the same project with Qt 5 and Qt 6 is not possible. */