微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

包含QMdiSubWindows的QMdiArea对可访问性API不可见

我正在使用Qt应用程序,并尝试通过可访问性接口来实现UI自动化。 除了这个应用程序有一个包含QMdisubWindow的qmdiarea ,并且这些子窗口中包含的任何内容对于自动化接口是完全不透明的这一事实之外,这一切都运行良好。 我尝试通过Windows SDK中的UIAVerify检查元素,其中显示了以下内容

这些子窗口包含标准的网格布局,其中包含标准的Qt小部件。 由于这里的heirachy完全由标准的Qt小部件组成,而所有标准的Qt小部件都实现了MSAA定义的可访问性接口,所以我不明白为什么MDI区域中的所有元素都是隐藏的,因为我可以自由访问GUI中所有其他区域的元素。

C ++,linux:如何限制函数访问文件系统?

让视障人士使用Windows软件?

为什么叙述者不能把自己作为一个屏幕阅读器报告给windows?

从C#听Windows辅助function事件

如何在Windows Vista / 7中以编程方式控制文本input面板(TabTip.exe)

在.NET应用程序中禁用可访问性快捷方式?

获取当前在另一个程序/窗口中打开的文档的文件名/path

什么是从Windows 8开始的新镜像驱动程序的新API?

在Windows中的F1:它应该打开程序的帮助屏幕或显示帮助文本?

www-data用户访问/ var / www /

可能原因是Qt没有把它的控件注册为有效的windows 。 Qt中的所有控件都绘制在一个画布上。 这是为了优化的原因。

这样的Qt控件被称为外来小部件 。

好消息是你可以让Qt注册Windows中的所有控件。 该文件指出了一些方法来做到这一点:

在您的环境中使用QT_USE_NATIVE_WINDOWS = 1。

在应用程序中设置Qt :: AA_NativeWindows属性。 所有小部件将是本地小部件。

在小部件上设置Qt :: WA_NativeWindow属性:小部件本身及其所有祖先将成为本地(除非设置了Qt :: WA_DontCreateNativeAncestors)。

调用QWidget :: winId来强制一个本地窗口(这意味着3)。

设置Qt :: WA_PaintOnScreen属性来强制一个本地窗口(这意味着3)。

一个是最简单的,不需要重新编译程序。

我用UIAVerify试了UIAVerify ,得到了一个完整的MDI控件树。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐