問題が発生しています。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|
スクリーン リーダーは "Open Ctrl+O" と表示しますが、ご覧のとおり、ショートカットの文字列が重複しています。
これまでに試したこと: 表示できるすべてのプロパティを設定します (たとえば、QAction::setWhatsThis、QAction::setIconText など)。
使用できる小さなハックを見つけました。私は次のようなことができます:
openAction->setText(openAction->text() + "\n\n\n"+ openAction->shortcut().toString());
しかし、これはテキストの上部から少し切り取ります ("Open")。したがって、このハックを使用するときにテキストが切り取られないようにテキストを揃える方法で十分です。
私はどんな提案にもオープンです。statusBar を使用してこれを行う方法があると思いますが、方法がわかりません。私は自分自身を明確にしたことを願っています...助けてくれてありがとう!