/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Design Studio documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/

/*!
    \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.
*/
