Qt 中的辅助功能通知

Accessibility notification in Qt

我正在尝试在某些事件发生时向 Jaws 或 NVDA 推送通知。 这些事件可以随时发生,并且任何应用程序小部件都可以拥有焦点。它们不链接到用户操作,而是链接到控制器事件。 这是我的尝试:

void announceNewMessageIfNeeded(){
    if(QAccessible::isActive()){
         QWidget* focusWidget = QApplication::focusWidget();
         if(focusWidget != nullptr){
              auto* accessibleInterface = QAccessible::queryAccessibleInterface(focusWidget);
              accessibleInterface->setText(QAccessible::Name, "New Message");
              auto *ev = new QAccessibleEvent(accessibleInterface, QAccessible::Alert);
              QAccessible::updateAccessibility(ev); 

         }
    }
}

我尝试了上面的代码并进行了各种小改动,但我要么没有可访问性更新,要么无法访问空指针。 通过调试日志,我确定 focusWidget 是正确的(它指向具有 currentFocus 的项目)并且调用了 announceNewMessageIfNeeded。 有什么想法吗?

似乎有效的解决方案:

if(QAccessible::isActive()){
    QWidget* focusedWidget = QApplication::focusWidget();
    if(focusedWidget != nullptr){
        auto *ev =  new QAccessibleValueChangeEvent(focusedWidget, "New Message");
        QAccessible::updateAccessibility(ev);
    }
}