本页内容

QAccessible Class

QAccessible 类提供了与无障碍功能相关的枚举和静态函数。更多内容...

头文件: #include <QAccessible>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

公共类型

struct State
(since 6.8) enum class AnnouncementPoliteness { Polite, Assertive }
(since 6.8) enum class Attribute { Custom, Level, Locale, Orientation }
enum Event { AcceleratorChanged, ActionChanged, ActiveDescendantChanged, Alert, Announcement, …, VisibleDataChanged }
Id
InterfaceFactory
enum InterfaceType { TextInterface, ValueInterface, ActionInterface, TableInterface, TableCellInterface, …, ViewportInterface }
flags Relation
enum RelationFlag { Label, Labelled, Controller, Controlled, DescriptionFor, …, AllRelations }
enum Role { AlertMessage, Animation, Application, Assistant, BlockQuote, …, Window }
enum Text { Name, Description, Value, Help, Accelerator, …, Identifier }
enum TextBoundaryType { CharBoundary, WordBoundary, SentenceBoundary, ParagraphBoundary, LineBoundary, NoBoundary }

静态公共成员

QAccessibleInterface *accessibleInterface(QAccessible::Id id)
void deleteAccessibleInterface(QAccessible::Id id)
void installFactory(QAccessible::InterfaceFactory factory)
bool isActive()
QAccessibleInterface *queryAccessibleInterface(QObject *object)
QAccessible::Id registerAccessibleInterface(QAccessibleInterface *iface)
void removeFactory(QAccessible::InterfaceFactory factory)
void setRootObject(QObject *object)
QAccessible::Id uniqueId(QAccessibleInterface *iface)
void updateAccessibility(QAccessibleEvent *event)

详细描述

该类是QWidget 应用程序辅助功能的一部分。

辅助功能应用程序可供无法通过常规方式使用应用程序的人士使用。

该类中的函数用于辅助功能应用程序(也称为 AT 服务器)与辅助功能工具(AT 客户端)之间的通信,例如屏幕阅读器和盲文显示器。客户端和服务器通过以下方式进行通信:

服务器与客户端之间的通信由setRootObject() 函数初始化。可以设置函数指针来替换或扩展 QAccessible 中静态函数的默认行为。

Qt 支持 Microsoft Active Accessibility (MSAA)、macOS 辅助功能以及 Unix/X11 AT-SPI 标准。其他后端可通过 QAccessibleBridge 获得支持。

在 Unix/X11 AT-SPI 实现中,当满足以下两个条件时,应用程序即具备无障碍功能:

  • org.a11y.Status.IsEnabled DBus 属性为 true
  • DBus 属性 org.a11y.Status.ScreenReaderEnabled 的值为 true

除了设置 DBus AT-SPI 属性外,还可以通过设置 QT_LINUX_ACCESSIBILITY_ALWAYS_ON 环境变量来实现。

除了 QAccessible 的静态函数外,Qt 还提供了一个通用接口 `QAccessibleInterface`,可用于封装所有小部件和对象(例如 `QPushButton`)。该单一接口提供了辅助技术所需的所有元数据。Qt 将其内置小部件对此接口的实现作为插件提供。

在开发自定义小部件时,您可以创建QAccessibleInterface 的自定义子类,并将其作为插件(通过QAccessiblePlugin )分发,或将其编译到应用程序中。 同样,Qt 的预定义无障碍支持可以作为插件(默认)构建,也可以直接构建到 Qt 库中。使用插件的主要优势在于,无障碍类仅在实际使用时才会被加载到内存中;在未使用辅助技术的常见情况下,它们不会造成性能下降。

Qt 还包含两个便利类:QAccessibleObject 和QAccessibleWidget ,它们继承自QAccessibleInterface ,并提供最低标准的元数据(例如,控件几何信息、窗口标题、基本帮助文本)。在封装自定义的QObject 或QWidget 子类时,您可以将其用作基类。

另请参阅 QAccessibleInterface 。

成员类型文档

[since 6.8] enum class QAccessible::AnnouncementPoliteness

此枚举描述了QAccessibleAnnouncementEvent 所使用的提示优先级。

对于QAccessible::AnouncementPoliteness::Polite ,辅助技术应在下一个合适的时机播报该消息,例如在当前句子朗读完毕时,或用户暂停输入时。礼貌播报仍可能打断正在进行的另一条礼貌播报。

当指定QAccessible::AnouncementPoliteness::Assertive 时,辅助技术应立即通知用户。

由于中断可能会使用户感到困惑或导致他们无法完成当前任务,因此除非中断是必须的,否则不应使用QAccessible::AnouncementPoliteness::Assertive 。

常量值描述
QAccessible::AnnouncementPoliteness::Polite0该提示具有正常优先级。
QAccessible::AnnouncementPoliteness::Assertive1该提示具有高优先级,应立即通知用户,即使这意味着会打断用户的当前任务。

该枚举在 Qt 6.8 中引入。

另请参阅 QAccessibleAnnouncementEvent 。

[since 6.8] enum class QAccessible::Attribute

此枚举描述了QAccessibleAttributesInterface 所使用的不同类型的属性。

这些属性与 ARIA、AT-SPI2、IAccessible、UIA 和 NSAccessibility 中所定义的“属性”(或“对象属性”)概念相当,并在适用情况下映射到相应的平台属性。

每个属性均作为键值对进行处理,其中该枚举的值用作键。

属性值以QVariant 表示。存储在QVariant 中的值的类型是固定的,并在下文针对每种属性类型进行了说明。

常量值描述
QAccessible::Attribute::Custom0值类型:QHash<QString 、QString> “Custom ”属性的特殊之处在于,它可以同时有效地表示多个属性,因为它本身是一个用于表示键值对的QHash 。对于支持属性自定义键值对的平台,在“Custom ”属性中设置的键值对将直接桥接到平台层,而不会对平台特定的属性进行任何转换。 一般而言,应优先使用其他类型更明确的属性。例如,在为特定功能正式添加新的枚举值之前,可使用此属性进行原型设计。
QAccessible::Attribute::Level1值类型:int 定义元素在结构中的层级,例如标题的层级。该属性在概念上与 ARIA 中的“aria-level”属性相对应。
QAccessible::Attribute::Locale (since Qt 6.10)2值类型:QLocale 元素的区域设置。这可用于指定元素的区域设置与应用程序的默认区域设置不同,例如对于使用与应用程序用户界面语言不同的语言的文档或文档中的段落。
QAccessible::Attribute::Orientation (since Qt 6.11)3值类型:Qt::Orientation 元素的朝向。该属性在概念上与 ARIA 中的“aria-orientation”属性相对应。

该枚举类型在 Qt 6.8 中引入。

另请参阅 QAccessibleAttributesInterface 。

enum QAccessible::Event

此枚举类型定义了可访问的事件类型。

常量值描述
QAccessible::AcceleratorChanged0x80C0某项操作的键盘快捷键已被更改。
QAccessible::ActionChanged0x0101某个操作已被更改。
QAccessible::ActiveDescendantChanged0x0102 
QAccessible::Alert0x0002系统警报(例如,来自QMessageBox 的消息)
QAccessible::Announcement (since Qt 6.8)0x80D0请求播放消息公告。
QAccessible::AttributeChanged0x0103 
QAccessible::ContextHelpEnd0x000D某个对象的上下文帮助(QWhatsThis )已完成。
QAccessible::ContextHelpStart0x000C某个对象的上下文帮助(QWhatsThis )已启动。
QAccessible::DefaultActionChanged0x80B0可访问对象的默认 QAccessible::Action 已发生变化。
QAccessible::DescriptionChanged0x800D该对象的QAccessible::Description 已更改。
QAccessible::DialogEnd0x0011一个对话框 (QDialog) 已被隐藏
QAccessible::DialogStart0x0010一个对话框(QDialog )已被设置为可见。
QAccessible::DocumentContentChanged0x0104文本文档的内容已发生变化。
QAccessible::DocumentLoadComplete0x0105已加载一个文档。
QAccessible::DocumentLoadStopped0x0106文档加载已被停止。
QAccessible::DocumentReload0x0107已启动文档重新加载。
QAccessible::DragDropEnd0x000F拖放操作即将完成。
QAccessible::DragDropStart0x000E拖放操作即将开始。
QAccessible::Focus0x8005某个对象获得了键盘焦点。
QAccessible::ForegroundChanged0x0003一个窗口已被激活(即,桌面上的新窗口获得了焦点)。
QAccessible::HelpChanged0x80A0对象的QAccessible::Help 文本属性已发生变化。
QAccessible::HyperlinkEndIndexChanged0x0108超文本链接显示文本的结束位置已发生变化。
QAccessible::HyperlinkNumberOfAnchorsChanged0x0109超文本链接中的锚点数量已发生变化,这可能是因为显示文本已被拆分以提供多个链接。
QAccessible::HyperlinkSelectedLinkChanged0x010A所选超文本链接的链接已发生变化。
QAccessible::HyperlinkStartIndexChanged0x010D超文本链接的显示文本起始位置已发生变化。
QAccessible::HypertextChanged0x010E超文本链接的显示文本已发生变化。
QAccessible::HypertextLinkActivated0x010B一个超文本链接已被激活,可能是通过点击或按键触发的。
QAccessible::HypertextLinkSelected0x010C已选中一个超文本链接。
QAccessible::HypertextNLinksChanged0x010F 
QAccessible::IdentifierChanged (since Qt 6.8)0x80E0对象的标识符已发生变化。
QAccessible::LocationChanged0x800B对象在屏幕上的位置已发生变化。
QAccessible::MenuCommand0x0018一个菜单项被触发。
QAccessible::MenuEnd0x0005菜单已关闭(Qt 对所有菜单均使用 PopupMenuEnd)。
QAccessible::MenuStart0x0004菜单栏上已打开一个菜单(Qt 对所有菜单都使用 PopupMenuStart)。
QAccessible::NameChanged0x800C对象的QAccessible::Name 属性已发生变化。
QAccessible::ObjectAttributeChanged0x0110 
QAccessible::ObjectCreated0x8000创建了一个新对象。
QAccessible::ObjectDestroyed0x8001一个对象被删除。
QAccessible::ObjectHide0x8003一个对象被隐藏;例如,通过QWidget::hide()。被隐藏的对象的任何子对象都不会发送此事件。当一个对象因被其他对象遮挡而被隐藏时,也不会发送此事件。
QAccessible::ObjectReorder0x8004布局或项目视图已添加、移除或移动了一个对象(Qt 不使用此事件)。
QAccessible::ObjectShow0x8002显示了一个对象;例如,通过调用QWidget::show()。
QAccessible::PageChanged0x0111 
QAccessible::ParentChanged0x800F对象的父对象发生了变化。
QAccessible::PopupMenuEnd0x0007弹出菜单已关闭。
QAccessible::PopupMenuStart0x0006弹出菜单已打开。
QAccessible::RoleChanged (since Qt 6.11)0x80E1对象的角色已发生变化。
QAccessible::ScrollingEnd0x0013滚动条的滚动操作已结束(鼠标已松开滑块手柄)。
QAccessible::ScrollingStart0x0012滚动条的滚动操作即将开始;这可能是由于鼠标点击了滑块手柄等原因引起的。
QAccessible::ScrollingPositionChanged (since Qt 6.12)0x0014在滚动操作过程中,位置发生了变化。
QAccessible::SectionChanged0x0112 
QAccessible::SelectionAdd0x8007已将一个项目添加到项目视图的选中项中。
QAccessible::SelectionRemove0x8008项目视图选定项中已移除一个项目。
QAccessible::Selection0x8006菜单或项目视图中的选择内容已发生变化。
QAccessible::SelectionWithin0x8009项目视图中的选择范围发生了若干变化。
QAccessible::SoundPlayed0x0001某个对象播放了一段声音
QAccessible::TableCaptionChanged0x0113表格标题已被更改。
QAccessible::TableColumnDescriptionChanged0x0114表格列的描述(通常位于列标题中)已被更改。
QAccessible::TableColumnHeaderChanged0x0115表格列标题已被更改。
QAccessible::TableRowDescriptionChanged0x0117表格行的描述(通常位于行标题中)已被更改。
QAccessible::TableRowHeaderChanged0x0118表格行标题已被更改。
QAccessible::TableSummaryChanged0x0119表格的摘要已更改。
QAccessible::TextColumnChanged0x011D文本列已被更改。
QAccessible::VisibleDataChanged0x0122 

此枚举的值被定义为与IAccessible2和MSAA规范中定义的值相同。

QAccessible::Id

“无符号”的同义词,由QAccessibleInterface 缓存使用。

QAccessible::InterfaceFactory

这是一个对具有以下签名的函数指针的typedef:

typedef QAccessibleInterface *myFactoryFunction(const QString &key, QObject *);

该函数接收一个QString 和一个QObject 指针,其中QString 是用于标识该接口的键。QObject 用于传递给QAccessibleInterface ,以便后者能够持有对其的引用。

如果该键和QObject 没有对应的QAccessibleInterface ,则返回nullptr 。

queryAccessibilityInterface() 会依次调用已安装的工厂,直到其中一个提供接口为止。

enum QAccessible::InterfaceType

QAccessibleInterface 支持多个子接口。为了提供有关某些对象的更多信息,其可访问表示应实现其中一个或多个接口。

注意:在 继承这些接口之一时 ,必须实现QAccessibleInterface::interface_cast()方法。

常量值描述
QAccessible::TextInterface0适用于支持选择或多行显示的文本。简单的标签无需实现此接口。
QAccessible::ValueInterface2用于操作值的对象,例如滑块或滚动条。
QAccessible::ActionInterface3适用于允许用户触发操作的交互式对象。基本上,凡是允许(例如)鼠标交互的对象均属此类。
QAccessible::TableInterface5适用于列表、表格和树形结构。
QAccessible::TableCellInterface6适用于 TableInterface 对象中的单元格。
QAccessible::HyperlinkInterface7适用于超链接节点(通常作为文本节点的子节点嵌入)
QAccessible::SelectionInterface (since Qt 6.5)8适用于支持选择子对象的非文本对象。
QAccessible::AttributesInterface (since Qt 6.8)9适用于支持对象特定属性的对象。
QAccessible::ViewportInterface (since Qt 6.12)10适用于允许二维或索引滚动的对象。

另请参阅 QAccessibleInterface::interface_cast(),QAccessibleTextInterface,QAccessibleValueInterface,QAccessibleActionInterface,QAccessibleTableInterface,QAccessibleTableCellInterface,QAccessibleSelectionInterface,QAccessibleAttributesInterface 以及QAccessibleViewportInterface 。

enum QAccessible::RelationFlag
flags QAccessible::Relation

该枚举类型定义了一组位标志,这些标志可以组合使用,以表示两个可访问对象之间的关系。它被 relations() 函数所使用,该函数会返回调用对象的所有相关接口的列表,以及每个对象之间的关系。

列表中的每个条目都是一个 std::pair,其中second 成员存储由first 成员表示的returned 对象与origin (调用方)接口/对象之间的关系类型。

在下表中,returned 对象指代返回列表中的对象,而origin 对象则是调用接口所表示的对象。

常量值描述
QAccessible::Label0x00000001returned 对象是origin 对象的标签。
QAccessible::Labelled0x00000002returned 对象由origin 对象进行标记。
QAccessible::Controller0x00000004returned 对象控制origin 对象。
QAccessible::Controlled0x00000008returned 对象由origin 对象控制。
QAccessible::DescriptionFor (since Qt 6.6)0x00000010returned 对象为origin 对象提供描述。
QAccessible::Described (since Qt 6.6)0x00000020returned 对象由origin 对象描述。
QAccessible::FlowsFrom (since Qt 6.6)0x00000040内容在逻辑上从returned 对象流向origin 对象。
QAccessible::FlowsTo (since Qt 6.6)0x00000080内容在逻辑上从origin 对象流向returned 对象。
QAccessible::AllRelations0xffffffff用作掩码,用于指定我们对所有关系的信息都感兴趣

relations() 的实现会返回这些标志的组合。其中某些值是互斥的。

Relation 类型是QFlags<RelationFlag> 的 typedef。它存储 RelationFlag 值的“或”组合。

enum QAccessible::Role

此枚举定义了可访问对象的角色。这些角色包括:

常量值描述
QAccessible::AlertMessage0x00000008用于向用户发出提示的对象。
QAccessible::Animation0x00000036用于显示动画的对象。
QAccessible::Application0x0000000E代表应用程序的对象
QAccessible::Assistant0x00000020提供交互式帮助的对象。
QAccessible::BlockQuote (since Qt 6.9)0x431从其他来源引用的一段内容。
QAccessible::Border0x00000013一个表示边框的对象。
QAccessible::ButtonDropDown0x00000038一个可下拉显示项目列表的按钮。
QAccessible::ButtonDropGrid0x0000003A一个可下拉显示网格的按钮。
QAccessible::ButtonMenu0x00000039一个可下拉显示菜单的按钮。
QAccessible::Canvas0x00000035一个用于显示用户可与其交互的图形的对象。
QAccessible::Caret0x00000007一个表示系统插入点(文本光标)的对象。
QAccessible::Cell0x0000001D表格中的一个单元格。
QAccessible::Chart0x00000011一个用于显示数据图形化表示的对象。
QAccessible::CheckBox0x0000002C一个表示可选中或取消选中的选项的对象。某些选项提供“混合”状态,例如既未选中也未取消选中。
QAccessible::Client0x0000000A窗口中的客户端区域。
QAccessible::Clock0x0000003D显示时间的时钟。
QAccessible::ColorChooser0x404一个允许用户选择颜色的对话框。
QAccessible::Column0x0000001B一列单元格,通常位于表格中。
QAccessible::ColumnHeader0x00000019数据列的表头。
QAccessible::ComboBox0x0000002E用户可从中进行选择的选项列表。
QAccessible::ComplementaryContent0x42C文档或网页中与主要内容相辅相成的部分,通常为地标(参见 WAI-ARIA)。
QAccessible::Cursor0x00000006代表鼠标光标的对象。
QAccessible::Desktop0x00000082该对象代表桌面或工作区。
QAccessible::Dial0x00000031代表旋钮或调节钮的对象。
QAccessible::Dialog0x00000012一个对话框。
QAccessible::Document0x0000000F文档,例如办公应用程序中的文档。
QAccessible::EditableText0x0000002A可编辑文本,例如一行文本或文本编辑框。
QAccessible::Equation0x00000037一个表示数学方程的对象。
QAccessible::Footer0x40E页面中的页脚(通常出现在文档中)。
QAccessible::Form0x410包含控件的 Web 表单。
QAccessible::Graphic0x00000028图形或图片,例如图标。
QAccessible::Grip0x00000004用户可拖动以调整小部件大小的控制点。
QAccessible::Grouping0x00000014一个表示其他对象的逻辑分组的对象。
QAccessible::Heading0x414文档中的标题。
QAccessible::HelpBalloon0x0000001F一个在单独的、短暂存在的窗口中显示帮助的对象。
QAccessible::HotkeyField0x00000032一个热键字段,允许用户输入键序列。
QAccessible::Indicator0x00000027一个表示当前值或项目的指示器。
QAccessible::LayeredPane0x00000080一个可以包含分层子对象的对象,例如在堆栈中。
QAccessible::Link0x0000001E指向其他内容的链接。
QAccessible::List0x00000021一个项目列表,用户可以从中选择一个或多个项目。
QAccessible::ListItem0x00000022项目列表中的一个项目。
QAccessible::MenuBar0x00000002用户可从中打开菜单的菜单栏。
QAccessible::MenuItem0x0000000C菜单或菜单栏中的一个项目。
QAccessible::NoRole0x00000000该对象没有角色。这通常表示该对象无效。
QAccessible::Note0x41B一个部分,其内容是对资源主要内容的补充或辅助。
QAccessible::Notification0x00000086表示通知(例如在系统托盘中)的对象。此角色仅在 Linux 系统中生效。
QAccessible::PageTab0x00000025用户可选中的页面选项卡,用于在对话框中切换到其他页面。
QAccessible::PageTabList0x0000003C页面标签的列表。
QAccessible::Paragraph0x00000083一段文本(通常出现在文档中)。
QAccessible::Pane0x00000010一个通用容器。
QAccessible::PopupMenu0x0000000B一个菜单,其中列出了用户可选择以执行某项操作的选项。
QAccessible::ProgressBar0x00000030该对象显示正在进行的操作的进度。
QAccessible::PropertyPage0x00000026一个属性页,用户可以在其中更改选项和设置。
QAccessible::Button0x0000002B一个按钮。
QAccessible::RadioButton0x0000002D一个表示与其他选项互斥的选项的对象。
QAccessible::Row0x0000001C一行单元格,通常位于表格内。
QAccessible::RowHeader0x0000001A数据行的标题。
QAccessible::ScrollBar0x00000003滚动条,允许用户滚动可见区域。
QAccessible::Section0x00000085(文档中的)一个部分。
QAccessible::Separator0x00000015将空间划分为逻辑区域的分隔线。
QAccessible::Slider0x00000033一个滑块,允许用户在给定范围内选择一个值。
QAccessible::Sound0x00000005代表声音的对象。
QAccessible::SpinBox0x00000034一个旋转框控件,允许用户在给定范围内输入一个值。
QAccessible::Splitter0x0000003E一个将可用空间分配给其子控件的分隔器。
QAccessible::StaticText0x00000029静态文本,例如其他控件的标签。
QAccessible::StatusBar0x00000017状态栏。
QAccessible::Switch (since Qt 6.11)0x00000087一个可切换开/关的开关。
QAccessible::Table0x00000018以行和列网格形式展示数据的表格。
QAccessible::Terminal0x00000081终端或命令行界面。
QAccessible::TitleBar0x00000001窗口的标题栏文字。
QAccessible::ToolBar0x00000016工具栏,用于将用户经常使用的控件分组。
QAccessible::ToolTip0x0000000D提供有关其他对象信息的工具提示。
QAccessible::Tree0x00000023树形结构中的项目列表。
QAccessible::TreeItem0x00000024树结构中的一个项目。
QAccessible::UserRole0x0000ffff用于用户定义角色的第一个值。
QAccessible::WebDocument0x00000084HTML文档,通常在浏览器中显示。
QAccessible::Whitespace0x0000003B其他对象之间的空白区域。
QAccessible::Window0x00000009顶级窗口。

enum QAccessible::Text

此枚举指定了可访问对象返回的字符串信息。

常量值描述
QAccessible::Name0对象的名称。可被可访问客户端用作标识符或简短描述。
QAccessible::Description1描述该对象的简短文本。
QAccessible::Value2对象的值。
QAccessible::Help3提供有关如何使用该对象信息的较长文本。
QAccessible::Accelerator4用于执行对象默认操作的键盘快捷键。
QAccessible::UserText0x0000ffff用于用户自定义文本的第一个值。
QAccessible::Identifier (since Qt 6.8)6该对象的标识符,例如用于 UI 测试。

enum QAccessible::TextBoundaryType

该枚举描述了不同类型的文本边界。它遵循 IAccessible2 API,并在QAccessibleTextInterface 中使用。

常量值描述
QAccessible::CharBoundary0使用单个字符作为边界。
QAccessible::WordBoundary1以单词作为分界点。
QAccessible::SentenceBoundary2以句子为分隔符。
QAccessible::ParagraphBoundary3以段落为分界。
QAccessible::LineBoundary4以换行符为分界。
QAccessible::NoBoundary5无分界(使用整段文本)。

另请参阅 QAccessibleTextInterface 。

成员函数文档

[static] QAccessibleInterface *QAccessible::accessibleInterface(QAccessible::Id id)

返回属于id 的QAccessibleInterface 。

如果 id 无效,则返回nullptr 。

[static] void QAccessible::deleteAccessibleInterface(QAccessible::Id id)

将属于此id 的接口从缓存中移除并删除。该id将失效,缓存可能会重新使用该id。

[static] void QAccessible::installFactory(QAccessible::InterfaceFactory factory)

安装InterfaceFactory factory 。最后添加的工厂将是queryAccessibleInterface() 函数首先调用的那个。

[static] bool QAccessible::isActive()

如果平台请求了无障碍信息,则返回true 。

在屏幕阅读器等工具访问辅助功能框架之前,此函数将返回 false。即使辅助功能未激活,仍可使用QAccessible::queryAccessibleInterface(),但不会向平台发送任何通知。

建议使用此函数,以避免在不需要时通过updateAccessibility() 发送耗费资源的通知。

[static] QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)

如果给定的object 存在QAccessibleInterface 实现,则该函数返回该实现的指针;否则返回nullptr 。

该函数会依次调用所有已安装的工厂函数(从最近安装的到最久未安装的),直到找到一个能为object 类提供接口的工厂函数。如果没有工厂函数能为该类提供无障碍访问实现,则该函数会加载已安装的无障碍访问插件,并测试是否有任何插件能提供该实现。

如果该对象的类没有可用的实现,该函数将尝试使用上述策略为该对象的父类查找实现。

所有接口均由内部缓存管理,不应被删除。

[static] QAccessible::Id QAccessible::registerAccessibleInterface(QAccessibleInterface *iface)

调用此函数可确保手动创建的接口得到正确的内存管理。

每个接口iface 必须且仅可调用一次。调用queryAccessibleInterface 时会隐式调用此函数,仅当使用“new”运算符实例化QAccessibleInterfaces时才需要显式调用此函数。不建议采用此方式,在可能的情况下请使用默认函数,并让queryAccessibleInterface()负责处理此事。

当需要重写QAccessibleInterface::child() 函数并在构造子节点后返回该子节点时,必须调用此函数。

[static] void QAccessible::removeFactory(QAccessible::InterfaceFactory factory)

从已安装的 InterfaceFactories 列表中移除factory 。

[static] void QAccessible::setRootObject(QObject *object)

将该应用程序中可访问对象的根对象设置为object 。所有其他可访问对象均可通过从根对象开始的对象导航访问。

通常情况下,无需调用此函数,因为 Qt 会在进入QApplication::exec() 中的事件循环之前,立即将QApplication 对象设置为根对象。

使用 QAccessible::installRootObjectHandler() 可将该函数调用重定向至自定义处理函数。

另请参阅 queryAccessibleInterface()。

[static] QAccessible::Id QAccessible::uniqueId(QAccessibleInterface *iface)

返回QAccessibleInterface 的唯一ID:iface 。

[static] void QAccessible::updateAccessibility(QAccessibleEvent *event)

通知可能与无障碍客户端相关的变更。

event 提供有关该变更的详细信息。其中包括变更的来源和性质。event 应包含足够的信息,以便发出有意义的通知。

例如,类型ValueChange 表示滑块的位置已发生变化。

每当您的可访问对象或其子元素的状态发生变化时(无论是通过编程方式(例如调用QLabel::setText()) 还是通过用户交互),请调用此函数。

如果没有辅助功能工具正在监听此事件,调用此函数对性能的影响很小;但如果确定调用参数的开销较大,可以测试QAccessible::isActive() 以避免不必要的计算。

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