如何设置 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 指定助记符(& 符号快捷方式)?

QMenu 中用于 QActions 的 QTooltip

如何将 QMenu 中的 QAction 转换为 QWidget?

为禁用的 QToolButton 启用 QMenu 访问

防止 QMenu 在其 QAction 之一被触发时关闭

如何获得 UIScrollView 中包含的 UIView 的初始比例?