class QAccessible#

提供与无障碍访问相关的枚举和静态函数的QAccessible类。更多...

概要#

静态函数#

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们 always 欢迎对代码片段进行翻译的贡献。如果您发现翻译问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式通知我们。

详细描述#

此类是QWidget应用程序可访问性的一个部分。

可访问应用程序可供无法通过常规方式使用应用程序的人使用。

此类中的函数用于可访问应用程序(也称为AT服务器)和可访问性工具(AT客户端)之间的通信,例如屏幕阅读器和点阵显示。客户端和服务器以以下方式进行通信

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

Qt支持微软活性可访问性(MSAA)、macOS可访问性和Unix/X11 AT-SPI标准。可以通过QAccessibleBridge支持其他后端。

在Unix/X11 AT-SPI实现中,当满足两个条件时,应用程序变得可访问

  • org.a11y.Status.IsEnabled DBus属性为true

  • org.a11y.Status.ScreenReaderEnabled DBus属性为true

设置DBus AT-SPI属性的另一种方法是设置QT_LINUX_ACCESSIBILITY_ALWAYS_ON环境变量。

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

在开发自定义小工具时,您可以创建自定义的QAccessibleInterface子类,并将它们作为插件(使用QAccessiblePlugin)分发,或者将它们编译进应用程序中。同样,Qt预定义的辅助功能支持可以作为插件(默认)或直接编译入Qt库中。使用插件的主要优点是,只有在实际使用时,辅助功能类才会被加载到内存中;它们不会减慢没有使用辅助技术的常规情况。

Qt还包含了两个便利类,QAccessibleObject和QAccessibleWidget,它们继承自QAccessibleInterface,并提供了最低限度的元数据(例如,小部件几何形状、窗口标题、基本帮助文本)。您可以使用它们作为自定义QObject或QWidget子类的基类。

class 事件#

此枚举类型定义了辅助功能事件类型。

常量

描述

QAccessible.AcceleratorChanged

一个动作的键盘快捷键已被更改。

QAccessible.ActionChanged

一个动作已被更改。

QAccessible.ActiveDescendantChanged

QAccessible.Alert

系统警报(例如,来自QMessageBox的消息)。

QAccessible.AttributeChanged

QAccessible.ContextHelpEnd

对象的上下文帮助(QWhatsThis)已经结束。

QAccessible.ContextHelpStart

对象的上下文帮助(QWhatsThis)已启动。

QAccessible.DefaultActionChanged

辅助对象默认QAccessible::Action已被更改。

QAccessible.DescriptionChanged

对象的Description属性已更改。

QAccessible.DialogEnd

一个对话框(QDialog)已被隐藏。

QAccessible.DialogStart

一个对话框(QDialog)已被设置为可见。

QAccessible.DocumentContentChanged

一个文本文档的内容已更改。

QAccessible.DocumentLoadComplete

已加载一个文档。

QAccessible.DocumentLoadStopped

一个文档加载已被停止。

QAccessible.DocumentReload

已启动一个文档重新加载。

QAccessible.DragDropEnd

拖放操作即将完成。

QAccessible.DragDropStart

拖放操作即将启动。

QAccessible.Focus

一个对象获得了键盘焦点。

QAccessible.ForegroundChanged

一个窗口已被激活(即,一个新窗口在桌面上获得焦点)。

QAccessible.HelpChanged

对象的Help属性已更改。

QAccessible.HyperlinkEndIndexChanged

超文本链接显示文本的结束位置已更改。

QAccessible.HyperlinkNumberOfAnchorsChanged

超文本链接中的锚点数量已更改,可能与显示文本已被分割为多个链接有关。

QAccessible.HyperlinkSelectedLinkChanged

所选超文本链接的链接已更改。

QAccessible.HyperlinkStartIndexChanged

超链接显示文本的起始位置已更改。

QAccessible.HypertextChanged

超链接显示文本已更改。

QAccessible.HypertextLinkActivated

超链接已被激活,可能通过点击或按键操作。

QAccessible.HypertextLinkSelected

超链接已被选择。

QAccessible.HypertextNLinksChanged

QAccessible.LocationChanged

对象的屏幕位置已更改。

QAccessible.MenuCommand

菜单项被触发。

QAccessible.MenuEnd

菜单已关闭(Qt对所有菜单使用PopupMenuEnd)。

QAccessible.MenuStart

菜单栏上已打开菜单(Qt对所有菜单使用PopupMenuStart)。

QAccessible.NameChanged

对象属性的Name属性已更改。

QAccessible.ObjectAttributeChanged

QAccessible.ObjectCreated

创建了新对象。

QAccessible.ObjectDestroyed

对象被删除。

QAccessible.ObjectHide

对象被隐藏;例如,使用QWidget::hide()。任何被隐藏的对象的子对象不发送此事件。当一个对象被其他对象遮挡时,不会发送此事件。

QAccessible.ObjectReorder

布局或项视图已添加、删除或移动对象(Qt不使用此事件)。

QAccessible.ObjectShow

对象被显示;例如,使用QWidget::show()。

QAccessible.PageChanged

QAccessible.ParentChanged

对象父对象已更改。

QAccessible.PopupMenuEnd

弹出菜单已关闭。

QAccessible.PopupMenuStart

弹出菜单已打开。

QAccessible.ScrollingEnd

滚动条滚动操作已结束(鼠标已释放滑块句柄)。

QAccessible.ScrollingStart

滚动条滚动操作即将开始;这可能是由于在滑块句柄上按下鼠标引起的,例如。

QAccessible.SectionChanged

QAccessible.SelectionAdd

在项视图中向选择中添加了项。

QAccessible.SelectionRemove

从项视图选择中删除了项。

QAccessible.Selection

菜单或项视图中的选择已更改。

QAccessible.SelectionWithin

在项视图中发生了选择的多处更改。

QAccessible.SoundPlayed

对象播放了声音。

QAccessible.TableCaptionChanged

表格标题已更改。

QAccessible.TableColumnDescriptionChanged

表格列的描述,通常在列标题中找到,已更改。

QAccessible.TableColumnHeaderChanged

表格列标题已更改。

QAccessible.TableRowDescriptionChanged

表格行的描述,通常在行标题中找到,已更改。

QAccessible.TableRowHeaderChanged

表格行标题已更改。

QAccessible.TableSummaryChanged

表格的摘要已更改。

QAccessible.TextColumnChanged

文本列已更改。

QAccessible.VisibleDataChanged

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

class Role#

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

常量

描述

QAccessible.AlertMessage

用于提醒用户的对象。

QAccessible.Animation

显示动画的对象。

QAccessible.Application

应用程序的主窗口。

QAccessible.Assistant

提供交互式帮助的对象。

QAccessible.Border

表示边界的对象。

QAccessible.ButtonDropDown

下拉列表项的按钮。

QAccessible.ButtonDropGrid

下拉网格的按钮。

QAccessible.ButtonMenu

一个下拉菜单的按钮。

QAccessible.Canvas

一个显示用户可以与之交互的图形的对象。

QAccessible.Caret

表示系统文本光标(光标)的对象。

QAccessible.Cell

表格中的一个单元格。

QAccessible.Chart

一个显示数据图形表示的对象。

QAccessible.CheckBox

一个表示可以选择或取消选项的对象。某些选项提供“混合”状态,例如既没有选中也没有取消选中。

QAccessible.Client

窗口中的客户区域。

QAccessible.Clock

显示时间的时钟。

QAccessible.ColorChooser

一个允许用户选择颜色的对话框。

QAccessible.Column

一个单元格列,通常在表格中。

QAccessible.ColumnHeader

一个列数据的标题。

QAccessible.ComboBox

用户可以从中选择的选择项目列表。

QAccessible.ComplementaryContent

文档或网页中与主要内容相辅相成的部分,通常是一个地标(参见WAI-ARIA)。

QAccessible.Cursor

表示鼠标光标的对象。

QAccessible.Desktop

表示桌面或工作区的对象。

QAccessible.Dial

表示旋钮或旋钮的对象。

QAccessible.Dialog

一个对话框。

QAccessible.Document

一个文档,例如在办公应用程序中。

QAccessible.EditableText

可编辑文本,例如一行或文本编辑。

QAccessible.Equation

表示数学方程的对象。

QAccessible.Footer

页面(通常在文档中)的页脚。

QAccessible.Form

包含控件的网页表单。

QAccessible.Graphic

图形或图片,例如图标。

QAccessible.Grip

用户可以拖动以更改小部件大小的把手。

QAccessible.Grouping

表示其他对象逻辑组合的对象。

QAccessible.Heading

文档中的标题。

QAccessible.HelpBalloon

在一个单独的短寿命窗口中显示帮助的对象。

QAccessible.HotkeyField

允许用户输入键序列的热键字段。

QAccessible.Indicator

表示当前值或项目的指示器。

QAccessible.LayeredPane

可以包含分层子对象的对象,例如在堆中。

QAccessible.Link

指向其他东西的链接。

QAccessible.List

一个项目列表,用户可以从中选择一个或多个项目。

QAccessible.ListItem

项目列表中的项目。

QAccessible.MenuBar

用户可以通过它打开菜单的菜单栏。

QAccessible.MenuItem

菜单或菜单栏中的项。

QAccessible.NoRole

对象没有角色。这通常表示一个无效的对象。

QAccessible.Note

内容是括号内或辅助主要内容的资源部分。

QAccessible.Notification

表示通知(例如在系统托盘中)的对象。此角色仅在Linux上有效。

QAccessible.PageTab

用户可以通过选择它来切换到对话框中的不同页面的页签。

QAccessible.PageTabList

页签列表。

QAccessible.Paragraph

文本段落(通常在文档中找到)。

QAccessible.Pane

一个通用容器。

QAccessible.PopupMenu

列出用户可以选择以执行操作的选项的菜单。

QAccessible.ProgressBar

对象显示正在进行的操作的进度。

QAccessible.PropertyPage

用户可以更改选项和设置的属性页面。

QAccessible.Button

一个按钮。

QAccessible.RadioButton

一个表示与其他选项相互排斥的选项的对象。

QAccessible.Row

行中的一个单元格,通常位于表格内部。

QAccessible.RowHeader

数据行标题。

QAccessible.ScrollBar

滚动条,允许用户滚动可见区域。

QAccessible.Section

文档中的某个部分。

QAccessible.Separator

分隔符,用来分隔空间为逻辑区域。

QAccessible.Slider

允许用户在给定范围内选择值的滑块。

QAccessible.Sound

表示声音的对象。

QAccessible.SpinBox

一个用于允许用户在给定范围内输入值的转盘。

QAccessible.Splitter

分隔器,将其子小部件之间的可用空间分布。

QAccessible.StaticText

静态文本,如其他小部件的标签。

QAccessible.StatusBar

状态栏。

QAccessible.Table

一个表示行和列网格中的数据的表格。

QAccessible.Terminal

终端或命令行界面。

QAccessible.TitleBar

窗口的标题栏标题。

QAccessible.ToolBar

工具栏,用于组织用户经常访问的小部件。

QAccessible.ToolTip

提供有关其他对象信息的工具提示。

QAccessible.Tree

树结构中的项目列表。

QAccessible.TreeItem

树结构中的项。

QAccessible.UserRole

用于用户自定义角色的第一个值。

QAccessible.WebDocument

HTML文档,通常在浏览器中。

QAccessible.Whitespace

其他对象之间的空白空间。

QAccessible.Window

顶级窗口。

class Text#

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

常量

描述

QAccessible.Name

对象名称。这既可以作为标识符,也可以用作可访问客户端的简短描述。

QAccessible.Description

描述对象的简短文本。

QAccessible.Value

对象值。

QAccessible.Help

提供有关如何使用对象的较长文本。

QAccessible.Accelerator

执行对象默认操作的快捷键。

QAccessible.UserText

用于用户定义文本的第一个值。

class RelationFlag#

(继承自enum.Flag) 该枚举类型定义了可以组合使用以指示两个可访问对象之间关系的位标志。它由relations()函数使用,该函数返回调用对象的全部相关接口的列表,以及每个对象的关系。

列表中的每个条目都是一个QPair,其中第二个成员存储了由第一个成员表示的返回对象与原(调用)接口/对象之间的关系类型。

以下表中,“返回对象”指返回列表中的对象,“原对象”是指调用接口表示的对象。

常量

描述

QAccessible.Label

返回的对象是 origin 对象的标签。

QAccessible.Labelled

返回的对象由 origin 对象标记。

QAccessible.Controller

返回的对象控制 origin 对象。

QAccessible.Controlled

返回的对象由 origin 对象控制。

QAccessible.DescriptionFor

返回的对象为 origin 对象提供描述。

QAccessible.Described

返回的对象由 origin 对象描述。

QAccessible.FlowsFrom

内容逻辑上从返回的对象流向 origin 对象。

QAccessible.FlowsTo

内容逻辑上从 origin 对象流向返回的对象。

QAccessible.AllRelations

用作掩码,以指示我们感兴趣所有关系的信息。

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

class InterfaceType#

QAccessibleInterface 支持多个子接口。为了提供关于一些对象更多的信息,它们的可访问表示应该实现一个或多个这些接口。

注意

当对象这些接口之一进行子类化时,需要实现 interface_cast()

常量

描述

QAccessible.TextInterface

用于支持选择或超过一行文本的文本。简单的标签不需要实现此接口。

QAccessible.ValueInterface

用于操作值的对象,例如滑块或滚动条。

QAccessible.ActionInterface

用于允许用户触发动作的交互式对象。基本上包括允许鼠标交互的一切内容。

QAccessible.TableInterface

用于列表、表格和树。

QAccessible.TableCellInterface

用于TableInterface对象中的单元格。

QAccessible.HyperlinkInterface

用于超链接节点(通常作为文本节点的子节点嵌入)。

QAccessible.SelectionInterface

用于支持选择子对象的非文本对象。

class TextBoundaryType#

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

常量

描述

QAccessible.CharBoundary

使用单独的字符作为边界。

QAccessible.WordBoundary

使用单词作为边界。

QAccessible.SentenceBoundary

使用句子作为边界。

QAccessible.ParagraphBoundary

使用段落作为边界。

QAccessible.LineBoundary

使用换行符作为边界。

QAccessible.NoBoundary

无边界(使用整个文本)。

static accessibleInterface(uniqueId)#
参数:

uniqueId – int

返回类型:

QAccessibleInterface

返回属于idQAccessibleInterface

如果id无效,则返回None

static cleanup()#
static deleteAccessibleInterface(uniqueId)#
参数:

uniqueId – int

从缓存中删除此id所属的接口并将其删除。该id将无效且可能被缓存重新使用。

static installFactory(arg__1)#
参数:

arg__1PyCallable

static isActive()#
返回类型:

bool

如果平台请求了辅助功能信息,则返回true

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

建议在不需要时使用此函数,以避免通过updateAccessibility()方法发送昂贵的通知。

staticqAccessibleTextBoundaryHelper(cursor, boundaryType)#
参数:
  • cursorQTextCursor

  • boundaryTypeTextBoundaryType

返回类型:

.std.pairint,int

staticqueryAccessibleInterface(arg__1)#
参数:

arg__1QObject

返回类型:

QAccessibleInterface

如果给定对象存在QAccessibleInterface实现,则此函数返回实现对实现的指针;否则返回None

该函数将调用所有已安装的工厂函数(从最近安装到最久远安装),直到找到一个为对象的类提供接口的函数。如果没有工厂可以提供类对应的辅助功能实现,则函数加载已安装的辅助功能插件,并检查这些插件是否能提供实现。

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

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

staticregisterAccessibleInterface(iface)#
参数:

ifaceQAccessibleInterface

返回类型:

int

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

必须对每个接口iface正好调用一次。在调用queryAccessibleInterface时将隐式调用此函数。如果使用“new”运算符创建了QAccessibleInterfaces实例,则调用此函数是必需的。这不建议这么做,在可能的情况下,使用默认函数,并让queryAccessibleInterface()处理此事。

当需要重新实现 child() 函数并在构造它之后返回子对象时,需要调用此函数。

static setActive(active)#
参数:

active – bool

static setRootObject(object)#
参数:

objectQObject

将此应用程序的可访问对象的根对象设置为 object。所有其他可访问对象均可以通过从根对象进行对象导航来访问。

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

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

static uniqueId(iface)#
参数:

ifaceQAccessibleInterface

返回类型:

int

返回 QAccessibleInterface 的唯一 ID。

static updateAccessibility(event)#
参数:

eventQAccessibleEvent

通知有关可能对可访问性客户端相关的更改。

event 提供更改的详细信息,包括更改的来源和性质。应包含足够的信息以提供有意义的通知。

例如,类型 ValueChange 表示滑块的位置已更改。

每当你的可访问对象或其子元素的状态发生改变时(无论是通过程序(例如通过调用 QLabel::setText())还是用户交互)都应调用此函数。

如果没有可访问性工具在监听此事件,调用此函数的性能损失很小,但如果你确定调用参数的成本很高,你可以测试 isActive() 以避免不必要的计算。