我遇到了问题。我似乎无法让屏幕阅读器告诉短信键以及QMenu中包含的QAction的选项名称。例如,而不是"打开...",我希望屏幕阅读器告诉我"打开... Ctrl + O"。
正如我所看到的,问题是屏幕阅读器只能看到QAction :: text()属性。 所以,如果我做这样的事情:
QMenuBar* menus = this->menuBar();
QMenu* fileMenu = new QMenu("&File", menus);
//I want to do something that is the equivalent of this two lines,
//but for QAction
fileMenu->setAccessibleName("File");
fileMenu->setAccessibleDescription("Alt+F");
QAction* openAction = new QAction("Open", fileMenu);
openAction->setShortcut(QKeySequence::fromString("Ctrl+O"));
fileMenu->addAction(openAction);
menus->addMenu(fileMenu);
我得到这样的东西:(对不起,但我需要至少10个声望才能发布图片)
|文件|
|打开Ctrl + O |
屏幕阅读器告诉我文件"文件菜单Alt + F"但是对于打开选项只是"打开"。
如果我尝试做类似的事情:
openAction->setText(openAction->text() + " " + openAction->shortcut().toString());
我得到这样的东西:
|文件|
|打开Ctrl + O Ctrl + O |
屏幕阅读器现在告诉我"打开Ctrl + O",但正如您所看到的那样,它会复制字符串以供快捷方式使用。
我到目前为止所尝试的内容:设置我能看到的所有属性(例如QAction :: setWhatsThis,QAction :: setIconText等)
我发现了一个我可以使用的小黑客;我可以做类似的事情:
openAction->setText(openAction->text() + "\n\n\n"+ openAction->shortcut().toString());
但是这会从文本的顶部略微减少(#34; Open")。因此,当我使用这个黑客时,为了让它不被删除,这是一种对文本进行对齐的方法。
我对任何建议持开放态度。我认为使用statusBar有办法做到这一点,但我不知道怎么做。 我希望自己明确表示......谢谢你的帮助!