Qt Quick Controls

Qt Quick Controls 提供了一套控件,可用于在 Qt Quick 中构建完整的界面。此模块从 Qt 5.7 开始引入。

Qt Quick Controls 随附一系列可定制的样式。有关更多详细信息,请参阅Qt Quick Controls 样式化

使用模块

QML API

模块的 QML 类型可以通过 QtQuick.Controls 导入使用。要使用这些类型,请将以下导入语句添加到您的 .qml 文件中

import QtQuick.Controls

C++ API

使用 Qt 模块的 C++ API 需要链接到模块库,无论是直接链接还是通过其他依赖项。一些构建工具为此提供了专用的支持,包括 CMakeqmake

使用 CMake 构建

使用 find_package() 命令在 Qt6 软件包中定位所需的模块组件

find_package(Qt6 REQUIRED COMPONENTS QuickControls2)
target_link_libraries(mytarget PRIVATE Qt6::QuickControls2)

有关更多详细信息,请参阅使用 CMake 构建概述。

使用 qmake 构建

要使用 qmake 为构建配置模块,请将模块添加到项目中 .pro 文件中 QT 变量的值

QT += quickcontrols2

从源代码构建

推荐使用 Qt Image Formats 模块,但不是必需的。它提供了对 .webp 格式的支持,该格式用于 Imagine 样式

版本

Qt Quick Controls 2.0 在 Qt 5.7 中引入。随后的次要 Qt 版本会将 Qt Quick Controls 模块的导入版本逐次增加,直到 Qt 5.12,那时导入版本与 Qt 的次要版本匹配。

在 Qt 6 中,主版本和次要版本匹配,并且可以在 QML 中的导入中省略版本号。如果省略了版本号,则使用最新版本。

实验性的 Qt Labs 模块使用导入版本 1.0。

QtQtQuickQtQuick.Controls,
QtQuick.Controls.Material,
QtQuick.Controls.Universal,
QtQuick.Templates
Qt.labs.platform
5.72.72.01.0
5.82.82.11.0
5.92.92.21.0
5.102.102.31.0
5.112.112.41.0
5.122.122.121.0
6.06.06.01.0
............

修订版

由于 Qt Quick Controls 的实现方式,新添加的属性可能与同名的任何用户定义属性冲突。例如,以下片段将导致错误

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
    }
}

应将这些属性重命名以避免冲突。

模块发展

Qt Quick Controls最初是为了将触摸接口作为主要焦点而编写的。虽然已经可以开发桌面界面,但仍在进行工作,以提供更原生的外观和感觉。

Qt Quick Controls 的变更 列出了为 Qt 6 系列Qt所进行的模块 API 功能的重要变更。

文章和指南

示例

参考

许可和归属

Qt Quick Controls 可在 Qt 公司 提供的商业许可下获得。此外,它可在 GNU lesser general public license,版本 3GNU general public license,版本 2 下获得。有关详细信息,请参阅 Qt 许可

此外,Qt Quick Controls 可能包含以下权限许可下的第三方模块

© 2024 The Qt Company Ltd. 本文件中的文档贡献者的版权属于各自主人。本文件提供的文档是根据自由软件基金会发布的 GNU 自由文档许可 1.3 版本 的条款授权的。Qt 和相应标志是 The Qt Company Ltd. 在芬兰和/或在其他国家/地区的商标。所有其他商标均为相应所有权人的财产。