Спокойный создатель, вставьте пользовательское меню в указанном месте в строку меню

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

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

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

Поздравления

5
задан ollo 3 February 2014 в 18:39
поделиться

2 ответа

Используйте QMenuBar :: insertMenu вместе с QMenu :: menuAction .

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

QMenu *printMenu = new QMenu(tr("&Print"));
menuBar()->insertMenu(ui->menuHelp->menuAction(), printMenu);
10
ответ дан 18 December 2019 в 16:36
поделиться

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

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

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

2
ответ дан 18 December 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: