Qt: QAction не появляется в меню, если строка конструктора начинается с подстроки & quot; about & quot;

Определенные строки обрабатываются по-разному конструктором QAction? Это очень странно — если QString в конструкторе начинается с «About», это делает QAction невидимым в меню.

Этот фрагмент находится в методе дочернего класса QMainWindow:

mFileMenu = new QMenu(tr("&File"), mMenuBar);
mFileMenu->addAction(new QAction(tr("Export &Data"), mFileMenu)); // appears
mFileMenu->addAction(new QAction(tr("About"), mFileMenu)); // doesn't appear
mFileMenu->addAction(new QAction(tr("Abouut"), mFileMenu)); // appears
mFileMenu->addAction(new QAction(tr("Abouto"), mFileMenu)); // doesn't appear
mFileMenu->addAction(new QAction(tr("_About"), mFileMenu)); // appears
menuBar()->addMenu(mFileMenu);

Может кто-нибудь объяснить это поведение?

0

Решение

Если вы работаете на Mac, на документы:

Qt для Mac OS X также предоставляет функцию слияния строк меню, чтобы сделать
QMenuBar более точно соответствует принятой раскладке меню Mac OS X.

Функциональность слияния основана на строке, соответствующей заголовку
QMenu запись. Эти строки переводятся (используя QObject :: tr ()) в
Контекст «QMenuBar».

Если запись перемещена, ее слоты будут по-прежнему срабатывать, как если бы она находилась в
оригинальное место.

В приведенной ниже таблице указаны искомые строки и место записи.
размещены, если совпадают:

нота

Таким образом, действие не исчезло в любом случае, оно было помещено в меню приложения, как вы можете видеть в следующем примере:

введите описание изображения здесь

0

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


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