2010-06-15 25 views
4

J'ai créé une barre de menus et quelques menus avec le créateur Qt. Un des menus devait être codé pour utiliser les fonctionnalités QActionGroup. Maintenant, il est facile d'ajouter mon menu personnalisé à la barre de menu avec:Créateur Qt, insérer un menu personnalisé à l'endroit spécifié dans la barre de menu

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

mais mon menu sera dans la dernière position de la barre de menu. Comment puis-je ajouter mon menu à un endroit spécifié? (Par exemple, la deuxième place juste après le menu Fichier)

Salutations

Répondre

8

Utilisez QMenuBar::insertMenu conjointement avec QMenu::menuAction.

Par exemple, si vous souhaitez insérer dynamiquement le menu « Imprimer » à l'emplacement avant le menu « Aide », vous pouvez faire quelque chose comme ceci:

QMenu *printMenu = new QMenu(tr("&Print")); 
menuBar()->insertMenu(ui->menuHelp->menuAction(), printMenu); 
+1

l'utilisation de 'nouveau 'a causé quelques problèmes: Le menu a été ajouté, mais * pas * ajouté à la liste des enfants Remplacer' new' par 'menuBar() -> addMenu (" quel que soit le nom ")' a fait l'affaire ('QMenu * printMenu = menuBar() -> addMenu (tr ("& Print")) '). Enu est créé correctement via la barre de menus et placé à la position de la ligne 2 (si 'insertMenu()' n'est pas appelé, il est placé à la fin). – ollo

1

Si vous souhaitez ajouter un sous-menu au milieu de la barre de menu, ce n'est pas trivial. Il n'y a pas d'API directe pour cela, mais vous pouvez probablement retirer cela en manipulant les actions internes de QWidget (QMenu :: addMenu appelle simplement QWidget::addAction(menu->menuAction())

En théorie, vous pouvez manipuler QMenuBar :: actions(), mais je ne l'a fait.

Quand je devais faire face à ce problème, je viens de reconstruire le menu d'un autre jeu de données (regardez dans votre moteur de recherche préféré pour qmdilib et vous verrez ma solution).

+0

Merci pour votre réponse, ça m'a beaucoup aidé! – Linoliumz

+0

S'il vous plaît expliquer pourquoi avez-vous voté vers le bas, cela m'aide à donner de meilleures réponses ou à apprendre. Merci. – elcuco

Questions connexes