Я создал строку меню и некоторые меню со спокойным создателем. Одно из меню должно было быть кодировано для использования QActionGroup
функции. Теперь легко добавить мое пользовательское меню к строке меню с:
printMenu = menuBar()->addMenu(tr("&Print"));
но мое меню будет в последней позиции строки меню. Как я добавляю свое меню в указанном месте? (например, второе место прямо после меню File)
Поздравления
Используйте QMenuBar :: insertMenu вместе с QMenu :: menuAction .
Например, если вы хотите динамически вставить меню «Печать» перед меню «Справка», вы можете сделать что-то вроде этого:
QMenu *printMenu = new QMenu(tr("&Print"));
menuBar()->insertMenu(ui->menuHelp->menuAction(), printMenu);
Если вы хотите добавить подменю в середине строки меню, это нетривиально. Для этого нет прямого API, но вы, вероятно, можете извлечь его, манипулируя внутренними действиями QWidget (QMenu :: addMenu просто вызывает QWidget :: addAction (menu-> menuAction ())
.
] Теоретически вы можете манипулировать QMenuBar :: actions (), но я никогда этого не делал.
Когда мне приходилось решать эту проблему, я просто реконструировал меню из другого набора данных (поищите в своей любимой поисковой системе ] qmdilib
и вы увидите мое решение).