Как обеспечить поддержку специальных возможностей для пунктов меню (QAction from QMenu)
У меня проблема. Я не могу заставить программу чтения с экрана сообщать сочетания клавиш вместе с именем опции для QAction, содержащейся в QMenu. Например, вместо "Открыть..." я хотел бы, чтобы программа чтения с экрана сказала мне "Открыть... 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|
Теперь программа чтения с экрана сообщает мне "Open Ctrl+O", но, как вы можете видеть, она дублирует строку для быстрого доступа.
То, что я пробовал до сих пор: установка всех свойств, которые я мог видеть (например, QAction::setWhatsThis, QAction::setIconText и т. Д.)
Я нашел небольшой взлом, который я мог бы использовать; Я мог бы сделать что-то вроде:
openAction->setText(openAction->text() + "\n\n\n"+ openAction->shortcut().toString());
Но это немного отрывается от верхней части текста ("Открыть"). Таким образом, способ выравнивания текста, чтобы он не был обрезан при использовании этого хака, подойдет.
Я открыт для любых предложений. Я думаю, что есть способы сделать это, используя statusBar, но я не знаю как. Надеюсь, я дал понять... Спасибо за вашу помощь!