本页内容

Qt Quick Controls QML Types

Qt Quick Controls 提供了用于创建用户界面的 QML 类型。这些 QML 类型与 Qt Quick 以及 Qt Quick Layouts配合使用。

Qt Quick Controls 您可以在 .qml 文件中使用以下导入语句将 QML 类型导入到应用程序中:

import QtQuick.Controls

QML 类型

AbstractButton

提供按钮通用功能的抽象基类

Action

抽象用户界面操作

ActionGroup

将操作组合在一起

ApplicationWindow

支持页眉和页脚的带样式顶级窗口

BusyIndicator

用于指示后台活动,例如在加载内容时

Button

可点击以执行命令或回答问题的按钮

ButtonGroup

一组互斥的可选中按钮

Calendar

日历命名空间

CalendarModel

日历模型

CheckBox

可切换开启或关闭的复选按钮

CheckDelegate

带有可切换开启或关闭状态的复选指示器的项目委托

ComboBox

用于选择选项的按钮与弹出列表组合控件

Container

提供容器通用功能的抽象基类

ContextMenu

附加类型提供了一种以符合平台规范的方式打开上下文菜单的方法

Control

提供所有控件通用功能的抽象基类

DayOfWeekRow

一周中各天的名称列表

DelayButton

长按即可触发的复选按钮

Dial

通过旋转来设置值的圆形旋钮

Dialog

带有标准按钮和标题的弹出式对话框,用于与用户进行短期交互

DialogButtonBox

用于对话框的按钮框

DoubleSpinBox

允许用户从一组预设的浮点数值中进行选择

Drawer

可通过滑动手势打开和关闭的侧边面板

Frame

用于逻辑控件组的视觉框架

GroupBox

用于逻辑控件组的视觉框架和标题

HorizontalHeaderView

提供一个与 TableView 配套的水平标题视图

HorizontalHeaderViewDelegate

ItemDelegate

可在各种视图和控件中使用的基本项目委托

Label

具有继承字体的样式化文本标签

Menu

可作为上下文菜单或弹出菜单使用的弹出窗口

MenuBar

提供窗口菜单栏

MenuBarItem

在菜单栏中显示下拉菜单

MenuItem

在菜单中显示一个项目

MenuSeparator

将菜单中的一组项目与相邻项目分隔开

MonthGrid

日历月份的日期网格

Overlay

用于弹出窗口的窗口覆盖层

Page

支持页眉和页脚的样式化页面控件

PageIndicator

指示当前活动页面

Pane

提供与应用程序样式和主题相匹配的背景

Popup

类似弹出窗口的用户界面控件的基础类型

ProgressBar

显示操作进度

RadioButton

可切换开启或关闭的互斥单选按钮

RadioDelegate

带单选指示器的排他性项目委托,该指示器可切换为开启或关闭状态

RangeSlider

用于通过沿轨道滑动两个控件来选择一组数值

RoundButton

一个具有圆角、可供用户点击的按钮控件

ScrollBar

垂直或水平的交互式滚动条

ScrollIndicator

垂直或水平的非交互式滚动指示器

ScrollView

可滚动视图

SearchField

专为搜索功能设计的专用输入框

SelectionRectangle

用于在 TableView 中选择表格单元格

Slider

用于通过沿轨道滑动滑块来选择值

SpinBox

允许用户从一组预设值中进行选择

SplitHandle

为 SplitView 滑块提供附加属性

SplitView

在每个项目之间放置可拖动的分隔线来排列项目

StackView

提供基于堆栈的导航模型

SwipeDelegate

可滑动项目委托

SwipeView

允许用户通过横向滑动来浏览页面

Switch

可开启或关闭的按钮

SwitchDelegate

带有可开启或关闭的开关指示器的项目委托

TabBar

允许用户在不同的视图或子任务之间切换

TabButton

外观适合用于 TabBar 的按钮

TableViewDelegate

可分配给 TableView 的委托

TextArea

多行文本输入区域

TextField

单行文本输入字段

ToolBar

用于上下文相关控件的容器

ToolButton

外观适合用于工具栏的按钮

ToolSeparator

用于将工具栏中的一组项目与相邻项目分隔开来

ToolTip

为任何控件提供工具提示

TreeViewDelegate

可分配给 TreeView 的委托

Tumbler

可选项目的旋转选择轮

VerticalHeaderView

为 TableView 提供垂直标题视图

VerticalHeaderViewDelegate

WeekNumberColumn

一列周数

在属性声明中使用Qt Quick Controls 类型

如 Qt Quick Templates 2 QML Types所述,Qt Quick Controls 中的每种类型都由一种 C++ “模板”类型作为后端支持。这些类型是控件逻辑和行为的非可视化实现。

例如,Menu 类型的 API 和行为由Qt Quick Templates 中的 C++ 类型定义。 任何希望提供菜单(Menu)的样式都必须提供一个 Menu.qml 文件,且该文件中的根项必须是来自Qt Quick Templates 中的 Menu。当您导入QtQuick.Controls 并在 QML 中创建一个菜单时,所获得的类型实际上是由该样式对应的 Menu.qml 文件定义的 QML 菜单。

若要在属性声明中将某个控件用作类型,应使用来自Qt Quick 模板库中的对应类型。例如,假设有一个PopupOpener 组件,它是一个可打开弹出窗口的 Button:

// PopupButton.qml
import QtQuick.Controls

Button {
    required property Popup popup

    onClicked: popup.open()
}

// main.qml
PopupButton {
    popup: saveChangesDialog
}

Dialog {
    id: saveChangesDialog

    // ...
}

运行此代码将导致错误:

Unable to assign Dialog_QMLTYPE to Popup_QMLTYPE

这是由于继承层次结构所致:

Popup (C++ type in QtQuick.Templates)
│   └── Popup (QML type in QtQuick.Controls)
└── Dialog (C++ type in QtQuick.Templates)
    └── Dialog (QML type in QtQuick.Controls)

QtQuick.Controls 中的 Dialog 并非继承自QtQuick.Controls 中的 Popup,而是继承自QtQuick.Templates 。

因此,应使用Qt Quick 模板中的 Popup 作为属性类型:

// PopupButton.qml
import QtQuick.Controls
import QtQuick.Templates as T

Button {
    required property T.Popup popup

    onClicked: popup.open()
}

有关Qt Quick Controls 模块的更多信息,请参阅 Qt Quick Controls 模块文档。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.