本页内容

Qt Quick 应用程序的无障碍功能

简介

本页说明如何为Qt Quick 应用程序添加无障碍元数据。Qt Quick 应用程序及其许多QML类型已内置无障碍功能。例如,Button控件支持键盘无障碍操作,这使得用户可以在控件之间按Tab键切换,并使用Return或Enter键激活它们。 因此,通过使用现有的控件,您在使Qt Quick 应用程序具备无障碍功能方面已经有了一个良好的开端。但在某些情况下,您可能需要明确 QML 项的功能。

与实现Web 应用程序无障碍功能类似,您需要为 UI 元素(在此情况下即 QML 项)分配属性。这些属性会向无障碍工具暴露元数据,配合精心选择的高对比度配色方案及其他视觉提示,有助于用户与您的Qt Quick 应用程序进行交互。

通常,无障碍工具关注三类不同的元数据:

  • 属性:辅助功能客户端会读取可访问对象的相关元数据。在某些情况下,辅助功能客户端还可以修改这些属性,例如行编辑框中的文本。
  • 操作:无障碍客户端会调用操作,例如按下按钮。
  • 关系与导航:辅助功能客户端利用对象之间的关系,在各个可访问对象之间进行遍历。

对于Qt Quick 应用程序,最需要关注的是Accessible QML类型,它能为QML项添加无障碍元数据。

向 QML 项添加辅助功能元数据

要为 QML 项(无论是 Qt 提供的现有类型,还是在 C++ 中定义的自定义类型)添加辅助功能元数据,请使用Accessible QML 类型。Accessible QML 类型最重要的属性包括name 、description 和role 。

以下是一个向Text 类型添加无障碍元数据的示例,在此示例中,该类型表示一个数学方程式:

Text {
    id: myMathEquation
    text: "y = 8x - 9"
    font.family: "Helvetica"

    Accessible.role: Accessible.Equation
    Accessible.name: myMathEquation.text
    Accessible.description: qsTr("Linear equation")
    Accessible.onPressAction: {
        // Highlight the x variable
        ...
    }
}

将role 的Equation 属性设置为 ,以指示Text 类型所表示的内容。name 是最重要的属性,它与按钮的文本绑定。若要为QML项提供额外信息,请使用description 属性。信号处理程序Accessible.pressAction 可被无障碍工具调用以触发按钮,其效果需与轻触或点击文本相同。

虽然文本内容本身具有可访问性,但多媒体内容则不然。因此,为图像、视频和音频等多媒体内容提供必要的可访问性元数据至关重要。以下是一个为表示饼图的图像提供可访问性元数据的示例:

Image {
    source: "pie-chart-683.png"
    Accessible.role: Accessible.Chart
    Accessible.name: qsTr("Pie chart")
    Accessible.description: qsTr("Pie chart that shows the distribution
    of sales from three store locations: Durban representing 60 percent,
    Johannesburg 20 percent, and Cape Town 20 percent")
    Accessible.onPressAction: {
        // Expand the image
        ...
    }
}

有关更多信息,请参阅Accessible ,其中列出了可添加到 QML 项的属性。

© 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.