如何设置 QMenu 中包含的 QActions 的可访问名称
Posted
技术标签:
【中文标题】如何设置 QMenu 中包含的 QActions 的可访问名称【英文标题】:How to set accessible name of QActions contained in a QMenu 【发布时间】:2010-08-24 22:48:43 【问题描述】:我正在尝试设置 QMenu 子项的可访问属性。我可以使用 setAccessibleName() 设置父菜单的可访问属性,因为它继承了 QWidget。不幸的是,您添加到菜单中的 QActions 不是小部件子类,它们直接继承 QObject。
有没有办法设置菜单项的可访问名称?
谢谢
【问题讨论】:
【参考方案1】:我从未使用过 Qt 的这一方面,但看起来您必须使用 QAccessibleInterface
框架。
QObject
有一个子类,即
QAccessibleObject
。这仍然有一些来自基础的纯方法,因此您需要提供一些方法。
从我快速浏览文档中收集到的信息,您可以为整个菜单或单独为每个操作提供QAccessibleObject
包装器。如果执行后者,那么您将实现 childCount()
以返回 0 和 role(int i)
以返回 QAccessible::MenuItem
。
【讨论】:
这听起来比我能找到的任何东西都更有希望。我正在研究使用 QAction::associatedWidgets() 来访问可能用于绘制菜单项/操作并以这种方式获取/设置可访问信息的任何图形小部件的可能性,但这可能只会让你回到 QMenu . 我试过了,它确实只是指向父菜单。 我将尝试实际答案中包含的想法,但感觉这应该容易得多...... @abudker:如果有什么安慰的话,我同意 :) @abudker,你工作了吗?如果是这样,您介意提供一点 sn-p 吗?【参考方案2】:我不确定这是否适用于您的菜单,但我解决了我的问题,其中 o->parent() 像这样返回 QObject。
dynamic_cast<QWidget*>(o->parent())->setAccessibleName("whatever");
【讨论】:
以上是关于如何设置 QMenu 中包含的 QActions 的可访问名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在 QMenu 中为 QActions 指定助记符(& 符号快捷方式)?