Как обеспечить поддержку специальных возможностей для пунктов меню (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 |

Теперь программа чтения с экрана сообщает мне «Открыть Ctrl + O», но, как вы можете видеть, она дублирует строку для быстрого доступа.

Что я пробовал до сих пор: установка всех свойств, которые я мог видеть (например, QAction :: setWhatsThis, QAction :: setIconText и т. Д.)

Я нашел небольшой взлом, который я мог бы использовать; Я мог бы сделать что-то вроде:

openAction->setText(openAction->text() + "\n\n\n"+ openAction->shortcut().toString());

Но это немного отрывается от верхней части текста («Открыть»). Таким образом, можно использовать способ выравнивания текста, чтобы он не был обрезан при использовании этого хака.

Я открыт для любых предложений. Я думаю, что есть способы сделать это, используя statusBar, но я не знаю как.
Надеюсь, я дал понять … Спасибо за вашу помощь!

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]