Qt создатель, вставьте пользовательское меню в указанное место в строку меню - PullRequest
5 голосов
/ 15 июня 2010

Я создал строку меню и некоторые меню с помощью Qt creator.Одно из меню должно было быть закодировано для использования QActionGroup функций.Теперь легко добавить мое пользовательское меню в строку меню с помощью:

printMenu = menuBar()->addMenu(tr("&Print"));

, но мое меню будет в последней позиции строки меню.Как добавить свое меню в указанное место?(например, второе место сразу после меню «Файл»)

Привет

Ответы [ 2 ]

9 голосов
/ 15 июня 2010

Используйте QMenuBar :: insertMenu в сочетании с QMenu :: menuAction .

Например, если вы хотите динамически вставить меню «Печать» врасположение перед меню «Справка», вы можете сделать что-то вроде этого:

QMenu *printMenu = new QMenu(tr("&Print"));
menuBar()->insertMenu(ui->menuHelp->menuAction(), printMenu);
2 голосов
/ 15 июня 2010

Если вы хотите добавить подменю в середине строки меню, это не тривиально. Для этого нет прямого API, но вы, вероятно, можете извлечь это, манипулируя внутренними действиями QWidget (QMenu :: addMenu просто вызывает QWidget::addAction(menu->menuAction()).

Теоретически, вы можете манипулировать QMenuBar :: actions (), но я никогда этого не делал.

Когда мне нужно было решить эту проблему, я просто реконструировал меню из другого набора данных (поищите в вашей любимой поисковой системе qmdilib, и вы увидите мое решение).

...