【发布时间】:2010-08-24 22:48:43
【问题描述】:
我正在尝试设置 QMenu 子项的可访问属性。我可以使用 setAccessibleName() 设置父菜单的可访问属性,因为它继承了 QWidget。不幸的是,您添加到菜单中的 QActions 不是小部件子类,它们直接继承 QObject。
有没有办法设置菜单项的可访问名称?
谢谢
【问题讨论】:
我正在尝试设置 QMenu 子项的可访问属性。我可以使用 setAccessibleName() 设置父菜单的可访问属性,因为它继承了 QWidget。不幸的是,您添加到菜单中的 QActions 不是小部件子类,它们直接继承 QObject。
有没有办法设置菜单项的可访问名称?
谢谢
【问题讨论】:
我从未使用过 Qt 的这一方面,但看起来您必须使用 QAccessibleInterface 框架。
QObject 有一个子类,即
QAccessibleObject。这仍然有一些来自基础的纯方法,因此您需要提供一些方法。
从我快速浏览文档中收集到的信息,您可以为整个菜单或单独为每个操作提供QAccessibleObject 包装器。如果执行后者,那么您将实现 childCount() 以返回 0 和 role(int i) 以返回 QAccessible::MenuItem。
【讨论】:
我不确定这是否适用于您的菜单,但我解决了我的问题,其中 o->parent() 像这样返回 QObject。
dynamic_cast<QWidget*>(o->parent())->setAccessibleName("whatever");
【讨论】: