0

我有问题。我似乎无法让屏幕阅读器告诉快捷键以及 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());

但这从文本的顶部(“打开”)减少了一点。因此,一种对齐文本的方法,以便在我使用此 hack 时不会被剪切。

我愿意接受任何建议。我认为有办法使用 statusBar 来做到这一点,但我不知道怎么做。我希望我说清楚了...谢谢您的帮助!

4

0 回答 0