QAccessible 类提供与可访问性相关的枚举和静态函数。 更多...
头: | #include <QAccessible> |
qmake: | QT += gui |
struct | State |
enum | Event { AcceleratorChanged, ActionChanged, ActiveDescendantChanged, Alert, AttributeChanged, …, VisibleDataChanged } |
typedef | Id |
typedef | InterfaceFactory |
enum | InterfaceType { TextInterface, ValueInterface, ActionInterface, TableInterface, TableCellInterface } |
flags | Relation |
enum | RelationFlag { Label, Labelled, Controller, Controlled, AllRelations } |
enum | Role { AlertMessage, Animation, Application, Assistant, Border, …, Window } |
enum | Text { Name, Description, Value, Help, Accelerator, UserText } |
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 支持 MSAA (微软活动可访问性)、macOS 可访问性和 Unix/X11 AT-SPI 标准。使用 QAccessibleBridge 可以支持其它后端。
在 Unix/X11 AT-SPI 实现中,应用程序变为可访问当满足 2 条件时:
设置 DBus AT-SPI 特性的替代是设置 QT_LINUX_ACCESSIBILITY_ALWAYS_ON 环境变量。
除 QAccessible 静态函数外,Qt 还提供一通用接口 QAccessibleInterface ,可用于包裹所有 Widget 和对象 (如 QPushButton )。此单一接口为辅助技术,提供所有必要元数据。Qt 为内置 Widget 作为插件提供此接口的实现。
当开发自定义 Widget 时,可以创建自定义子类为 QAccessibleInterface 并将它们分发作为插件 (使用 QAccessiblePlugin ) 或将它们编译进应用程序。同样,Qt 的预定义可访问性支持可以构建作为插件 (默认),或直接构建进 Qt 库。使用插件的主要优点是可访问性类仅加载进内存,若它们被实际使用;它们不会减慢没有使用辅助技术的常见情况。
Qt 还包括 2 方便类: QAccessibleObject and QAccessibleWidget ,继承自 QAccessibleInterface 并提供最小元数据公分母 (如:Widget 几何图形、窗口标题、基本帮助文本)。可以把它们用作基类,当包裹自定义 QObject or QWidget 子类。
另请参阅 QAccessibleInterface .
此枚举类型定义可访问事件类型。
常量 | 值 | 描述 |
---|---|---|
QAccessible::AcceleratorChanged
|
0x80C0
|
动作的键盘加速键已改变。 |
QAccessible::ActionChanged
|
0x0101
|
动作已改变。 |
QAccessible::ActiveDescendantChanged
|
0x0102
|
|
QAccessible::Alert
|
0x0002
|
系统警报 (如:消息来自 QMessageBox ) |
QAccessible::AttributeChanged
|
0x0103
|
|
QAccessible::ContextHelpEnd
|
0x000D
|
上下文帮助 ( QWhatsThis ) 对于已完成对象而言。 |
QAccessible::ContextHelpStart
|
0x000C
|
上下文帮助 ( QWhatsThis ) 对于已初启对象而言。 |
QAccessible::DefaultActionChanged
|
0x80B0
|
可访问对象的默认 QAccessible::Action 已改变。 |
QAccessible::DescriptionChanged
|
0x800D
|
对象的 QAccessible::Description 改变。 |
QAccessible::DialogEnd
|
0x0011
|
对话框 ( QDialog ) 已被隐藏 |
QAccessible::DialogStart
|
0x0010
|
对话框 ( QDialog ) 已被设为可见。 |
QAccessible::DocumentContentChanged
|
0x0104
|
文本文档的内容已改变。 |
QAccessible::DocumentLoadComplete
|
0x0105
|
文档已加载。 |
QAccessible::DocumentLoadStopped
|
0x0106
|
文档加载已停止。 |
QAccessible::DocumentReload
|
0x0107
|
文档重载已初启。 |
QAccessible::DragDropEnd
|
0x000F
|
拖放操作即将完成。 |
QAccessible::DragDropStart
|
0x000E
|
拖放操作即将被初启。 |
QAccessible::Focus
|
0x8005
|
对象已获得键盘聚焦。 |
QAccessible::ForegroundChanged
|
0x0003
|
A window has been activated (i.e., a new window has gained focus on the desktop). |
QAccessible::HelpChanged
|
0x80A0
|
The QAccessible::Help 对象的文本特性已改变。 |
QAccessible::HyperlinkEndIndexChanged
|
0x0108
|
超文本链接的显示文本的结束位置已改变。 |
QAccessible::HyperlinkNumberOfAnchorsChanged
|
0x0109
|
超文本链接中的锚点数已变化,或许因为显示文本已被拆分以提供多个链接。 |
QAccessible::HyperlinkSelectedLinkChanged
|
0x010A
|
选中的超文本链接的链接已改变。 |
QAccessible::HyperlinkStartIndexChanged
|
0x010D
|
超文本链接的显示文本的起始位置已改变。 |
QAccessible::HypertextChanged
|
0x010E
|
用于超文本链接的显示文本已改变。 |
QAccessible::HypertextLinkActivated
|
0x010B
|
A hypertext link has been activated, perhaps by being clicked or via a key press. |
QAccessible::HypertextLinkSelected
|
0x010C
|
超文本链接已被选中。 |
QAccessible::HypertextNLinksChanged
|
0x010F
|
|
QAccessible::LocationChanged
|
0x800B
|
对象在屏幕上的位置已改变。 |
QAccessible::MenuCommand
|
0x0018
|
菜单项被触发。 |
QAccessible::MenuEnd
|
0x0005
|
菜单已关闭 (Qt 对所有菜单使用 PopupMenuEnd)。 |
QAccessible::MenuStart
|
0x0004
|
菜单栏上的菜单已打开 (Qt 对所有菜单使用 PopupMenuStart)。 |
QAccessible::NameChanged
|
0x800C
|
The QAccessible::Name 对象的特性已改变。 |
QAccessible::ObjectAttributeChanged
|
0x0110
|
|
QAccessible::ObjectCreated
|
0x8000
|
新对象被创建。 |
QAccessible::ObjectDestroyed
|
0x8001
|
对象被删除。 |
QAccessible::ObjectHide
|
0x8003
|
对象被隐藏;例如,采用 QWidget::hide ()。任何被隐藏的子级对象不会发送此事件。它不会被发送,当对象被其它对象遮挡时。 |
QAccessible::ObjectReorder
|
0x8004
|
布局或项视图已添加、移除或移动对象 (Qt 不使用此事件)。 |
QAccessible::ObjectShow
|
0x8002
|
对象被显示;例如,采用 QWidget::show (). |
QAccessible::PageChanged
|
0x0111
|
|
QAccessible::ParentChanged
|
0x800F
|
对象的父级对象已改变。 |
QAccessible::PopupMenuEnd
|
0x0007
|
弹出菜单已关闭。 |
QAccessible::PopupMenuStart
|
0x0006
|
弹出菜单已打开。 |
QAccessible::ScrollingEnd
|
0x0013
|
滚动条卷动操作已结束 (鼠标已释放滑块手柄)。 |
QAccessible::ScrollingStart
|
0x0012
|
滚动条卷动操作即将开始;例如,这可能是由鼠标在滑块上按下而引起。 |
QAccessible::SectionChanged
|
0x0112
|
|
QAccessible::SelectionAdd
|
0x8007
|
项已被添加到项视图选定中。 |
QAccessible::SelectionRemove
|
0x8008
|
项已从项视图选定中被移除。 |
QAccessible::Selection
|
0x8006
|
在菜单或项视图中的选定已改变。 |
QAccessible::SelectionWithin
|
0x8009
|
项视图中的选定已有几处改变。 |
QAccessible::SoundPlayed
|
0x0001
|
声音已由对象播放 |
QAccessible::TableCaptionChanged
|
0x0113
|
表格标题已改变。 |
QAccessible::TableColumnDescriptionChanged
|
0x0114
|
在列标题中通常找到的表格列的描述已改变。 |
QAccessible::TableColumnHeaderChanged
|
0x0115
|
表格列标题已改变。 |
QAccessible::TableRowDescriptionChanged
|
0x0117
|
在行标题中通常找到的表格行的描述已改变。 |
QAccessible::TableRowHeaderChanged
|
0x0118
|
表格行标题已改变。 |
QAccessible::TableSummaryChanged
|
0x0119
|
表格摘要已改变。 |
QAccessible::TextColumnChanged
|
0x011D
|
文本列已改变。 |
QAccessible::VisibleDataChanged
|
0x0122
|
此枚举的值被定义为相同值,如那些定义于 IAccessible2 and MSAA 规范。
unsigned (无符号) 的同义词,使用通过 QAccessibleInterface 缓存。
这是采用以下签名的函数指针的 typedef:
typedef QAccessibleInterface* myFactoryFunction(const QString &key, QObject *);
函数接收 QString 和 QObject 指针,其中 QString 是标识接口的关键。 QObject 被用来传递给 QAccessibleInterface 以便可以保持对它的引用。
若键和
QObject
没有相应
QAccessibleInterface
,
nullptr
将被返回。
已安装工厂的调用是通过 queryAccessibilityInterface(),直到一个提供接口为止。
QAccessibleInterface 支持几个子接口。为提供有关某些对象的更多信息,它们的可访问表示应实现这些接口中一个或多个。
注意: 当子类化这些接口之一时, QAccessibleInterface::interface_cast () 需要被实现。
常量 | 值 | 描述 |
---|---|---|
QAccessible::TextInterface
|
0
|
对于支持选定或多于一行的文本而言。简单标签不需要实现此接口。 |
QAccessible::ValueInterface
|
2
|
对于用来操纵值的对象而言 (例如:滑块或滚动条)。 |
QAccessible::ActionInterface
|
3
|
对于允许用户触发动作的交互对象而言。基本上所有东西都允许 (例如:鼠标交互)。 |
QAccessible::TableInterface
|
5
|
对于列表、表格和树而言。 |
QAccessible::TableCellInterface
|
6
|
对于 TableInterface 对象单元格而言。 |
另请参阅 QAccessibleInterface::interface_cast (), QAccessibleTextInterface , QAccessibleValueInterface , QAccessibleActionInterface , QAccessibleTableInterface ,和 QAccessibleTableCellInterface .
此枚举类型定义可以组合以指示 2 可访问对象间关系的位标志。
常量 | 值 | 描述 |
---|---|---|
QAccessible::Label
|
0x00000001
|
第 1 个对象是第 2 个对象的标签。 |
QAccessible::Labelled
|
0x00000002
|
第 1 个对象被第 2 个对象所标签化。 |
QAccessible::Controller
|
0x00000004
|
第 1 个对象控制第 2 个对象。 |
QAccessible::Controlled
|
0x00000008
|
第 1 个对象被第 2 个对象所控制。 |
QAccessible::AllRelations
|
0xffffffff
|
用作掩码以指定对所有关系的有关信息感兴趣 |
Relations() 的实现返回这些标志的组合。某些值相互排斥。
Relation 类型是 typedef 对于 QFlags <RelationFlag>。它存储 RelationFlag 值的 OR 组合。
此枚举定义可访问对象的角色。角色包括:
常量 | 值 | 描述 |
---|---|---|
QAccessible::AlertMessage
|
0x00000008
|
用于提醒用户的对象。 |
QAccessible::Animation
|
0x00000036
|
显示动画的对象。 |
QAccessible::Application
|
0x0000000E
|
应用程序的主窗口。 |
QAccessible::Assistant
|
0x00000020
|
提供交互帮助的对象。 |
QAccessible::Border
|
0x00000013
|
表示边框的对象。 |
QAccessible::ButtonDropDown
|
0x00000038
|
下拉项列表的按钮。 |
QAccessible::ButtonDropGrid
|
0x0000003A
|
下拉栅格的按钮。 |
QAccessible::ButtonMenu
|
0x00000039
|
下拉菜单的按钮。 |
QAccessible::Canvas
|
0x00000035
|
用户可以与之交互,显示图形的对象。 |
QAccessible::Caret
|
0x00000007
|
表示系统插入符号 (文本光标) 的对象。 |
QAccessible::Cell
|
0x0000001D
|
表格中的单元格。 |
QAccessible::Chart
|
0x00000011
|
显示数据图形表示的对象。 |
QAccessible::CheckBox
|
0x0000002C
|
表示可以被复选 (或取消复选) 的选项的对象。某些选项提供混合状态,如:既不复选也不取消复选。 |
QAccessible::Client
|
0x0000000A
|
在窗口中的客户端区域。 |
QAccessible::Clock
|
0x0000003D
|
显示时间的时钟。 |
QAccessible::ColorChooser
|
0x404
|
让用户选择颜色的对话框。 |
QAccessible::Column
|
0x0000001B
|
单元格的列,通常在表格中。 |
QAccessible::ColumnHeader
|
0x00000019
|
用于数据列的 Header (头)。 |
QAccessible::ComboBox
|
0x0000002E
|
用户可以从其中选择的抉择列表。 |
QAccessible::ComplementaryContent
|
0x42C
|
与主要内容互补的文档或网页的一部分,通常是地标 (见 WAI-ARIA)。 |
QAccessible::Cursor
|
0x00000006
|
表示鼠标光标的对象。 |
QAccessible::Desktop
|
0x00000082
|
表示桌面或工作空间的对象。 |
QAccessible::Dial
|
0x00000031
|
表示表盘或旋钮的对象。 |
QAccessible::Dialog
|
0x00000012
|
对话框。 |
QAccessible::Document
|
0x0000000F
|
文档 (例如:在办公应用程序中)。 |
QAccessible::EditableText
|
0x0000002A
|
可编辑的文本 (譬如:行编辑或文本编辑)。 |
QAccessible::Equation
|
0x00000037
|
数学方程式表示对象。 |
QAccessible::Footer
|
0x40E
|
在页面中的页脚 (通常在文档中)。 |
QAccessible::Form
|
0x410
|
包含控件的 Web 表单。 |
QAccessible::Graphic
|
0x00000028
|
图形或图片 (如:图标)。 |
QAccessible::Grip
|
0x00000004
|
用户可以拖拽能改变 Widget 大小的握把。 |
QAccessible::Grouping
|
0x00000014
|
表示其它对象逻辑分组的对象。 |
QAccessible::Heading
|
0x414
|
文档中的标题。 |
QAccessible::HelpBalloon
|
0x0000001F
|
在单独短期窗口中显示帮助的对象。 |
QAccessible::HotkeyField
|
0x00000032
|
允许用户键入键序列的热键字段。 |
QAccessible::Indicator
|
0x00000027
|
表示当前值或项的指示器。 |
QAccessible::LayeredPane
|
0x00000080
|
可以包含分层子级的对象 (如:在堆栈中)。 |
QAccessible::Link
|
0x0000001E
|
指向其它内容的链接。 |
QAccessible::List
|
0x00000021
|
用户可从中选择一项或多项的项列表。 |
QAccessible::ListItem
|
0x00000022
|
在项列表中的项。 |
QAccessible::MenuBar
|
0x00000002
|
用户从中打开菜单的菜单栏。 |
QAccessible::MenuItem
|
0x0000000C
|
在菜单或菜单栏中的项。 |
QAccessible::NoRole
|
0x00000000
|
对象没有角色。这通常指示无效对象。 |
QAccessible::Note
|
0x41B
|
其内容在括号内或辅助资源的主要内容的区间。 |
QAccessible::Notification
|
0x00000086
|
通知表示对象 (如:在系统托盘中)。此角色仅在 Linux 起作用。 |
QAccessible::PageTab
|
0x00000025
|
用户可以在对话框中选择切换到不同页面的页面选项卡。 |
QAccessible::PageTabList
|
0x0000003C
|
页面选项卡列表。 |
QAccessible::Paragraph
|
0x00000083
|
文本段落 (通常在文档中找到)。 |
QAccessible::Pane
|
0x00000010
|
通用容器。 |
QAccessible::PopupMenu
|
0x0000000B
|
列表用户可以选择履行动作的选项的菜单。 |
QAccessible::ProgressBar
|
0x00000030
|
正在进行中操作进度的显示对象。 |
QAccessible::PropertyPage
|
0x00000026
|
用户可以在其中改变选项、设置的特性页面。 |
QAccessible::Button
|
0x0000002B
|
按钮。 |
QAccessible::RadioButton
|
0x0000002D
|
与其它选项相互排斥的选项的表示对象。 |
QAccessible::Row
|
0x0000001C
|
单元格行 (通常在表格中)。 |
QAccessible::RowHeader
|
0x0000001A
|
用于数据行的 Header (头)。 |
QAccessible::ScrollBar
|
0x00000003
|
允许用户滚动可见区域的滚动条。 |
QAccessible::Section
|
0x00000085
|
章节 (在文档中)。 |
QAccessible::Separator
|
0x00000015
|
将空间划分成逻辑区域的分隔符。 |
QAccessible::Slider
|
0x00000033
|
允许用户选择给定范围值的滑块。 |
QAccessible::Sound
|
0x00000005
|
表示声音的对象。 |
QAccessible::SpinBox
|
0x00000034
|
允许用户录入给定范围值的自旋框 Widget。 |
QAccessible::Splitter
|
0x0000003E
|
在其子级 Widget 之间分配可用空间的分割器。 |
QAccessible::StaticText
|
0x00000029
|
静态文本 (譬如:其它 Widget 的标签)。 |
QAccessible::StatusBar
|
0x00000017
|
状态栏。 |
QAccessible::Table
|
0x00000018
|
以行、列栅格表示数据的表格。 |
QAccessible::Terminal
|
0x00000081
|
终端或命令行接口。 |
QAccessible::TitleBar
|
0x00000001
|
窗口标题栏题注。 |
QAccessible::ToolBar
|
0x00000016
|
用于分组用户频繁访问 Widget 的工具栏。 |
QAccessible::ToolTip
|
0x0000000D
|
提供其它对象有关信息的工具提示。 |
QAccessible::Tree
|
0x00000023
|
树结构中的项列表。 |
QAccessible::TreeItem
|
0x00000024
|
树结构中的项。 |
QAccessible::UserRole
|
0x0000ffff
|
要使用的第一值 (对于用户定义角色而言)。 |
QAccessible::WebDocument
|
0x00000084
|
HTML 文档,通常在浏览器中。 |
QAccessible::Whitespace
|
0x0000003B
|
在其它对象之间的空白空间。 |
QAccessible::Window
|
0x00000009
|
顶层窗口。 |
此枚举指定可访问对象返回的字符串信息。
常量 | 值 | 描述 |
---|---|---|
QAccessible::Name
|
0
|
对象的名称。这可以用作标识符或短描述通过可访问客户端。 |
QAccessible::Description
|
1
|
描述对象的短文字。 |
QAccessible::Value
|
2
|
对象的值。 |
QAccessible::Help
|
3
|
给出如何使用对象的有关信息的更长文本。 |
QAccessible::Accelerator
|
4
|
执行对象默认动作的键盘快捷键。 |
QAccessible::UserText
|
0x0000ffff
|
用于用户定义文本的第一值。 |
此枚举描述不同类型的文本边界。它遵循 IAccessible2 API 和用于 QAccessibleTextInterface .
常量 | 值 | 描述 |
---|---|---|
QAccessible::CharBoundary
|
0
|
使用单个字符作为边界。 |
QAccessible::WordBoundary
|
1
|
使用单词作为边界。 |
QAccessible::SentenceBoundary
|
2
|
使用句子作为边界。 |
QAccessible::ParagraphBoundary
|
3
|
使用段落作为边界。 |
QAccessible::LineBoundary
|
4
|
使用换行符作为边界。 |
QAccessible::NoBoundary
|
5
|
无边界 (使用整个文本)。 |
另请参阅 QAccessibleTextInterface .
[static]
QAccessibleInterface
*QAccessible::
accessibleInterface
(
QAccessible::Id
id
)
返回 QAccessibleInterface 属于 id .
返回
nullptr
若 ID 无效。
[static]
void
QAccessible::
deleteAccessibleInterface
(
QAccessible::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
)
若
QAccessibleInterface
实现存在为给定
object
,此函数返回指向实现的指针;否则返回
nullptr
.
函数调用所有已安装工厂函数 (从最近安装到至少最近安装),直到找到某一提供接口,对于类 object 。若没有工厂可以为类提供可访问性实现,函数将加载已安装的可访问性插件,并测试是否有任何插件可以提供实现。
若对象的类的实现不可用,函数将试着使用以上战略寻找对象的父类的实现。
所有接口由内部缓存管理,且不应被删除。
[static]
QAccessible::Id
QAccessible::
registerAccessibleInterface
(
QAccessibleInterface
*
iface
)
调用此函数,以确保手动创建接口正确管理内存。
必须只准确调用一次,对于每接口 iface 。这是隐式调用当调用 queryAccessibleInterface ,才要求调用此函数,当采用 new 运算符实例化 QAccessibleInterfaces 时。这不推荐,尽可能使用默认函数和让 queryAccessibleInterface () 关心这。
当有必要重实现 QAccessibleInterface::child () 函数且在构造后返回子级,需要调用此函数。
[static]
void
QAccessible::
removeFactory
(
QAccessible::InterfaceFactory
factory
)
移除 factory 从已安装的 InterfaceFactories 列表。
[static]
void
QAccessible::
setRootObject
(
QObject
*
object
)
将此应用程序可访问对象的根对象设为 object 。可以到达所有其它可访问对象,使用来自根对象的对象导航。
通常,没有必要调用此函数,因为 Qt 设置 QApplication 对象立即作为根对象,之后才进入事件循环在 QApplication::exec ().
使用 QAccessible::installRootObjectHandler() 能将函数调用重定向到定制处理程序函数。
另请参阅 queryAccessibleInterface ().
[static]
QAccessible::Id
QAccessible::
uniqueId
(
QAccessibleInterface
*
iface
)
返回唯一 ID 为 QAccessibleInterface iface .
[static]
void
QAccessible::
updateAccessibility
(
QAccessibleEvent
*
event
)
通知可能与可访问性客户端相关的即将改变。
event 提供改变的有关细节。这些包括改变的来源和改变的性质。 event 应包含足够信息以给出有意义通知。
例如,类型
ValueChange
指示滑块位置已改变。
调用此函数,每当可访问对象或其某一子元素的状态以编程方式改变时 (如:通过调用 QLabel::setText ()) 或通过用户交互。
若没有可访问性工具监听此事件,调用此函数的性能损失很小,但是,若确定调用的参数很昂贵,可以测试 QAccessible::isActive () 以避免不必要的计算。