QAccessibleInterface Class
QAccessibleInterface 类定义了一个接口,用于公开有关可访问对象的信息。更多内容...
| 头文件: | #include <QAccessibleInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 由以下对象继承: |
- 所有成员列表(包括继承的成员)
- QAccessibleInterface 属于辅助功能类。
公共函数
| QAccessibleActionInterface * | actionInterface() |
| virtual QColor | backgroundColor() const |
| virtual QAccessibleInterface * | child(int index) const = 0 |
| virtual QAccessibleInterface * | childAt(int x, int y) const = 0 |
| virtual int | childCount() const = 0 |
| virtual QAccessibleInterface * | focusChild() const |
| virtual QColor | foregroundColor() const |
| virtual int | indexOfChild(const QAccessibleInterface *child) const = 0 |
| virtual void * | interface_cast(QAccessible::InterfaceType type) |
| virtual bool | isValid() const = 0 |
| virtual QObject * | object() const = 0 |
| virtual QAccessibleInterface * | parent() const = 0 |
| virtual QRect | rect() const = 0 |
| virtual QList<std::pair<QAccessibleInterface *, QAccessible::Relation>> | relations(QAccessible::Relation match = QAccessible::AllRelations) const |
| virtual QAccessible::Role | role() const = 0 |
(since 6.5) QAccessibleSelectionInterface * | selectionInterface() |
| virtual void | setText(QAccessible::Text t, const QString &text) = 0 |
| virtual QAccessible::State | state() const = 0 |
| QAccessibleTableCellInterface * | tableCellInterface() |
| QAccessibleTableInterface * | tableInterface() |
| virtual QString | text(QAccessible::Text t) const = 0 |
| QAccessibleTextInterface * | textInterface() |
| QAccessibleValueInterface * | valueInterface() |
(since 6.12) QAccessibleViewportInterface * | viewportInterface() |
| virtual QWindow * | window() const |
受保护函数
| QAccessibleInterface() | |
| virtual | ~QAccessibleInterface() |
详细说明
该类是“QWidget 应用程序辅助功能”的一部分。
辅助功能工具(也称为 AT 客户端),例如屏幕阅读器或盲文显示器,需要有关应用程序中可访问对象的高级信息。可访问对象提供专门的输入和输出方法,使用户能够使用辅助功能工具与已启用的应用程序(AT 服务器)进行交互。
用户需要与其交互或对其做出反应的每个元素都是可访问对象,并应提供此类信息。这些主要是视觉对象,例如小部件和小部件元素,但也可能是内容,例如声音。
辅助技术客户端使用三个基本概念来获取应用程序中任何可访问对象的信息:
- 属性客户端可以读取辅助功能对象的相关信息。在某些情况下,客户端还可以修改这些属性;例如,行编辑框中的文本。
- 操作客户端可以调用操作,例如按下按钮或。
- 关系与导航辅助技术客户端可以利用对象之间的关系,从一个可访问对象遍历到另一个可访问对象。
QAccessibleInterface 定义了这三个概念的 API。
关系与导航
函数childCount() 和indexOfChild() 分别返回可访问对象的子对象数量以及子对象在其父对象中的索引。函数childAt() 返回位于指定位置的子 QAccessibleInterface。 该子对象不一定是直接子对象。这使得当父对象已知最顶层子对象时,可以绕过中间层。childAt() 用于击中测试(查找鼠标下方的对象)。
relations() 函数提供有关对象与其他对象之间关系的详细信息,而parent() 和child() 则允许从一个对象遍历到另一个对象。
属性
可访问对象的核心属性是其role() 属性。不同的对象可能具有相同的角色,例如,滚动条中的“添加行”元素和对话框中的OK 按钮都具有相同的角色“button”。角色决定了用户可以与该用户界面元素进行何种交互。
对象的state()属性是由不同状态标志组合而成的,既可描述该对象的状态与“正常”状态有何不同(例如,可能处于不可用状态),也可描述其行为方式(例如,可能处于可选中状态)。
text() 属性提供有关该对象的文本信息。对象通常有一个名称,但还可以提供扩展信息,例如描述、帮助文本或其提供的任何键盘快捷键信息。某些对象允许通过setText() 函数更改text() 属性,但在大多数情况下,该信息为只读。
rect() 属性提供有关可访问对象几何形状的信息。此类信息通常仅适用于视觉对象。
接口
为了使用户能够与可访问对象进行交互,该对象除了必须实现 QAccessibleInterface 接口外,还必须实现QAccessibleActionInterface 接口。支持选择功能的对象可以定义用于更改选择内容的操作。
还有其他几个接口,应根据需要进行实现。QAccessibleTextInterface 应用于较大的文本编辑控件,例如文档视图。对于标签或单行编辑控件,不应实现此接口。
对于滑块、滚动条及其他数值选择器,应实现 `QAccessibleValueInterface `。
列表、表格和树形结构应实现 `QAccessibleTableInterface`。
可滚动视图应实现 `QAccessibleViewportInterface`。
另请参阅 QAccessible 、QAccessibleActionInterface 、QAccessibleTextInterface 、QAccessibleValueInterface 、QAccessibleTableInterface 以及QAccessibleViewportInterface 。
成员函数文档
[constexpr noexcept protected default] QAccessibleInterface::QAccessibleInterface()
默认——构造一个QAccessibleInterface 的实例。
[virtual noexcept protected] QAccessibleInterface::~QAccessibleInterface()
QAccessibleActionInterface *QAccessibleInterface::actionInterface()
[virtual] QColor QAccessibleInterface::backgroundColor() const
返回可访问对象的背景色(如适用),或返回一个无效的QColor 。
另请参阅 foregroundColor()。
[pure virtual] QAccessibleInterface *QAccessibleInterface::child(int index) const
返回索引为index 的可访问子节点。索引从0开始。可通过childCount 检查对象的子节点数量。
当请求一个无效的子节点时(例如,该子节点在此期间已失效),将返回nullptr 。
另请参阅 childCount() 和parent()。
[pure virtual] QAccessibleInterface *QAccessibleInterface::childAt(int x, int y) const
返回包含屏幕坐标(x ,y )的子元素的QAccessibleInterface 。如果该位置没有子元素,则该函数返回nullptr 。返回的accessible必须是子元素,但不一定是直接子元素。
此函数仅对可见对象可靠(不可见对象的布局可能不正确)。
所有视觉对象均提供此信息。
对于继承了QAccessibleObject 的对象,提供了一个默认实现。该实现将遍历所有子元素。如果小部件管理其子元素(例如表格),编写一个专门的实现会更高效。
另请参阅 ` rect()`。
[pure virtual] int QAccessibleInterface::childCount() const
返回属于该对象的子对象数量。子对象可以自行提供可访问性信息(例如子控件),也可以是该可访问对象的子元素。
所有对象均提供此信息。
另请参阅 indexOfChild()。
[virtual] QAccessibleInterface *QAccessibleInterface::focusChild() const
返回当前拥有键盘焦点的对象。
返回的对象可以是任何子元素,包括其自身。
[virtual] QColor QAccessibleInterface::foregroundColor() const
返回可访问对象的前景色(如果适用),或者返回一个无效的QColor 。
另请参阅 backgroundColor()。
[pure virtual] int QAccessibleInterface::indexOfChild(const QAccessibleInterface *child) const
返回对象child 在此对象子对象列表中的索引(从0开始计数);如果child 不是此对象的子对象,则返回-1。
所有对象都会提供其子对象的相关信息。
另请参阅 childCount()。
[virtual] void *QAccessibleInterface::interface_cast(QAccessible::InterfaceType type)
从通用类 `QAccessibleInterface` 返回一个特化的辅助功能接口 `type `。
当需要通过专用接口提供有关控件或对象的更多信息时,必须重写此函数。例如,行编辑框应实现QAccessibleTextInterface 接口。
另请参阅 QAccessible::InterfaceType 、QAccessibleTextInterface 、QAccessibleValueInterface 、QAccessibleActionInterface 、QAccessibleTableInterface 、QAccessibleTableCellInterface 和QAccessibleViewportInterface 。
[pure virtual] bool QAccessibleInterface::isValid() const
如果使用此接口实现所需的所有数据均有效(例如,所有指针均不为空),则返回true ;否则返回false 。
另请参阅 object()。
[pure virtual] QObject *QAccessibleInterface::object() const
返回指向QObject 的指针,该接口的实现为该接口提供了相关信息。
另请参阅 isValid()。
[pure virtual] QAccessibleInterface *QAccessibleInterface::parent() const
返回可访问对象层次结构中父对象的QAccessibleInterface 。
如果不存在父对象(例如,对于顶级应用程序对象),则返回nullptr 。
另请参阅 child()。
[pure virtual] QRect QAccessibleInterface::rect() const
返回对象的几何信息。该几何信息以屏幕坐标表示。
此函数仅对可见对象可靠(不可见对象的布局可能不正确)。
所有视觉对象均提供此信息。
另请参阅 childAt()。
[virtual] QList<std::pair<QAccessibleInterface *, QAccessible::Relation>> QAccessibleInterface::relations(QAccessible::Relation match = QAccessible::AllRelations) const
返回与其他小部件之间的有效关系。通常情况下,此方法不会返回父子关系,除非这些关系以特定方式进行处理(例如在树视图中)。它通常会返回“labeled-by”和“label”关系。
可以通过使用可选参数 `match` 来过滤关系。该方法绝不应返回其自身。
[pure virtual] QAccessible::Role QAccessibleInterface::role() const
返回对象的角色。对象的角色通常是静态的。
所有可访问的对象都具有角色。
[since 6.5] QAccessibleSelectionInterface *QAccessibleInterface::selectionInterface()
该函数是在 Qt 6.5 中引入的。
[pure virtual] void QAccessibleInterface::setText(QAccessible::Text t, const QString &text)
将对象的文本属性t 设置为text 。
请注意,大多数对象的文本属性均为只读,因此调用此函数可能不会产生任何效果。
另请参阅 text()。
[pure virtual] QAccessible::State QAccessibleInterface::state() const
返回对象的当前状态。返回值由 QAccessible::StateFlag 枚举中的标志组合而成。
所有可访问对象都有状态。
QAccessibleTableCellInterface *QAccessibleInterface::tableCellInterface()
QAccessibleTableInterface *QAccessibleInterface::tableInterface()
[pure virtual] QString QAccessibleInterface::text(QAccessible::Text t) const
返回对象的文本属性t 的值。
QAccessible::Name 是一个字符串,客户端用于为用户识别、查找或朗读可访问对象。所有对象在其容器内都必须拥有一个唯一的名称。由于客户端对名称的用途各不相同,因此该名称既应简要描述对象,又应具有唯一性。
可访问对象的QAccessible::Description 属性提供有关对象视觉外观的文本信息。该描述主要用于为视障用户提供更丰富的上下文信息,但也用于上下文搜索或其他应用场景。并非所有对象都有描述。 “确定”按钮通常不需要描述,但显示笑脸图标的工具按钮则需要。
可访问对象的QAccessible::Value 代表该对象所包含的视觉信息,例如行编辑框中的文本。通常,该值可由用户修改。并非所有对象都有值,例如静态文本标签就没有;而某些对象的状态本身即为值,例如切换按钮。
QAccessible::Help 文本提供了关于可访问对象的功能和用法信息。并非所有对象都提供此类信息。
QAccessible::Accelerator 是一个键盘快捷键,用于触发对象的默认操作。 键盘快捷键是菜单、菜单项或控件文本中带下划线的字符,可以是该字符本身,也可以是该字符与 Alt、Ctrl 或 Shift 等修饰键的组合。工具按钮等命令控件也具有快捷键,通常会在其工具提示中显示。
QAccessible::Identifier 可以显式设置,以向辅助技术提供一个 ID。这对于 UI 测试尤其有用。如果未显式设置标识符,则由相应接口根据QObject::objectName 或其类名,以及QObject::objectName 或其父级链中父节点的类名,自动生成一个 ID。
所有对象都会为QAccessible::Name 提供一个字符串。
另请参阅 setText()、role() 和state()。
QAccessibleTextInterface *QAccessibleInterface::textInterface()
QAccessibleValueInterface *QAccessibleInterface::valueInterface()
[since 6.12] QAccessibleViewportInterface *QAccessibleInterface::viewportInterface()
该函数是在 Qt 6.12 中引入的。
[virtual] QWindow *QAccessibleInterface::window() const
返回与底层对象关联的窗口。例如,QAccessibleWidget 重实现了此方法,并返回QWidget 的 windowHandle()。
在某些平台上,该方法用于向辅助技术(AT)客户端通知状态变化。后端将向上遍历所有祖先对象,直到找到一个窗口。(这意味着祖先对象中至少有一个接口应返回有效的QWindow 指针)。
默认实现返回 `nullptr`。
© 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.