2010-03-16 8 views
1

J'ai une application dans laquelle je peux lancer une boîte de dialogue modale sur une fenêtre principale. La fenêtre principale a une activité réseau en arrière-plan qui met à jour mon interface utilisateur en arrière-plan. Pour cette raison, le menu de l'application devient accessible même si la boîte de dialogue modale est ouverte.Le menu de l'application est activé même si une boîte de dialogue modale est ouverte

Comment puis-je éviter cela? Toute aide est appréciée. J'utilise Mac, Qt, Carbon.

Répondre

2

Vous ne pouvez pas désactiver le menu d'applications sous Mac OS X, il est toujours « actif » mais vous pouvez désactiver les actions que vous ne souhaitez pas utiliser tout dialogue est visible

+1

Merci pour downvoting, mais comme vous pouvez le voir, il n'y a pas d'autre réponse à cette question. C'est un comportement «naturel» sur Mac OS X que la barre de menu est toujours active –

+1

À droite, la bonne chose à faire est de désactiver les éléments individuels au besoin, et non le menu entier. Les instructions de l'interface utilisateur Apple indiquent "Même si tous les éléments d'un menu ou d'un sous-menu ne sont pas disponibles, le menu ou le titre du sous-menu n'est pas obscurci.L'utilisateur peut toujours ouvrir le menu, mais tous ses éléments sont grisés. pas disponible dans le présent contexte. " –

0

Vous pouvez avoir la boîte de dialogue modale créer son propre barre de menu, qui remplacera la fenêtre principale pendant que la boîte de dialogue est affichée.

Si vous ne souhaitez autoriser aucune action, créez simplement un QMenuBar vide avec la boîte de dialogue comme parent. Vous n'avez même pas à le montrer. Qt va le trouver et le promouvoir à la barre de menu globale automagiquement.

0

J'ai eu un problème similaire dans Ubuntu, donc peut-être cela résoudra votre problème sous Mac OS X aussi. C'est simple, il suffit de désactiver la propriété QMenu.nativeMenuBar de la barre de menu principale, c'est-à-dire menuBar->setNativeMenuBar(false). Voir la réponse acceptée ici: Global application menu active in modal dialog box (on Linux)

Questions connexes