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