// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
\page qtquickcontrols-versioning.html
\title Versioning scheme

\brief Explains the versioning scheme used by Qt Quick Controls.

\section1 Versions

Qt Quick Controls 2.0 was introduced in Qt 5.7. Subsequent minor Qt releases
increment the import version of the Qt Quick Controls modules by one, until Qt
5.12, where the import versions match Qt's minor version.

In Qt 6, both the major and minor versions match, and version numbers may be
omitted from imports in QML. If the version is omitted, the latest version will
be used.

The experimental Qt Labs modules use import version 1.0.

\table
    \header
    \li \c Qt
    \li \l {Qt Quick QML Types}{\c QtQuick}
    \li \l {Qt Quick Controls QML Types}{\c QtQuick.Controls},\br
        \l {Material Style}{\c QtQuick.Controls.Material},\br
        \l {Universal Style}{\c QtQuick.Controls.Universal},\br
        \l {Qt Quick Templates 2 QML Types}{\c QtQuick.Templates}
    \li \l {Qt Labs Platform QML Types}{\c Qt.labs.platform}
    \row
    \li 5.7
    \li 2.7
    \li 2.0
    \li 1.0
    \row
    \li 5.8
    \li 2.8
    \li 2.1
    \li 1.0
    \row
    \li 5.9
    \li 2.9
    \li 2.2
    \li 1.0
    \row
    \li 5.10
    \li 2.10
    \li 2.3
    \li 1.0
    \row
    \li 5.11
    \li 2.11
    \li 2.4
    \li 1.0
    \row
    \li 5.12
    \li 2.12
    \li 2.12
    \li 1.0
    \row
    \li 6.0
    \li 6.0
    \li 6.0
    \li 1.0
    \row
    \li ...
    \li ...
    \li ...
    \li ...
\endtable

\section1 Revisions

Due to how Qt Quick Controls are implemented, new properties that are added may
clash with any user-defined properties of the same name. For example, the
following snippet will result in an error:

\qml
import QtQuick.Controls 2.13

ApplicationWindow {
    // ...

    ComboBox {
        anchors.centerIn: parent

        // As currentValue was added in 2.14, the versioned import above
        // should cause this property to be used, but instead an error is produced:
        // "Cannot override FINAL property"
        property int currentValue: 0
    }
}
\endqml

These properties should be renamed to avoid the conflict.

*/
