2011-11-13 13 views
2

Je suis sur Mac 10.6, j'essaye de créer un menu avec Qt (Creator), mais le menu n'apparaît pas. J'ai eu quelques feed-back d'autres utilisateurs de PC, et le même code semble fonctionner sur les fenêtres:qmenu ne fonctionne pas sur MAC (Qt Creator)

#include <QtGui> 
#include "MyClass.h" 

MyClass::MyClass() 
{ 
// Create a menu 
    //QMainWindow::setMenuBar(new QMenuBar()); 
    QMenu* my_menu = new QMenu("&File", this); 
    menuBar()->addMenu(my_menu); 
} 

Avez-vous entendu parler de ce genre de problème avec Mac?

La barre d'outils fonctionne correctement, mais pas le menu.

EDIT: nouveau code:

#include <QtGui> 
#include "MMenu.h" 

MMenu::MMenu() 
{ 
    QMenu* fileMenu = new QMenu("&File", this); 
    QMenuBar *menuBar = new QMenuBar(0); 
    menuBar->addMenu(fileMenu); 
    //menuBar()->addMenu(fileMenu); 
} 

Merci

+0

Les Mac n'ont qu'une seule barre de menu. Permettez-moi de creuser un peu de mon code ... Je sais que vous pouvez l'utiliser – Robert

Répondre

1

Tout d'abord, vous pouvez être intéressé par la fonction addMenu (QString), qui renvoie le QMenu créé en une seule étape. Deuxièmement, essayez d'ajouter quelque chose au menu. Les Mac peuvent optimiser le menu vide. Mais je sais que cela devrait fonctionner, j'ai écrit un programme qui a très bien fonctionné sur OSX qui a initialisé les menus de cette façon.

+0

Merci Robert, j'ai trouvé quelque chose sur les fenêtres "Mac" dans le doc, disant que nous devrions utiliser "QMenu" sans parent, mais cela ne fait aucune différence . J'ai mis à jour mon post ci-dessus avec le nouveau code, mais malheureusement la barre de menu n'apparaît toujours pas – Paul

+0

salut Robert, d'accord, il apparaît en fait sur "haut" de ma fenêtre, pas dans ma fenêtre Qt, mais dans le coin supérieur gauche du Mac! – Paul

+0

Oui, c'est comme ça que fonctionnent les menus OSX. Il y en a un par application, et c'est dans la barre de menu principale en haut de l'écran. Je ne suis pas sûr que je connais même des applications OSX "natives" qui ont un menu appartenant à la fenêtre ... ils sont tous des applications X11 ou quelque chose et se profilent comme un pouce douloureux – Robert

0
QMenu *fileMenu = QMainWindow::menuBar()->addMenu(tr("&File")); 
fileMenu->addAction(your_action); 
fileMenu->addAction(your_second_action); 
... 

dans le constructeur ou partout où vous le souhaitez. Et si vous voulez juste y jeter un coup d'œil avant que vos fenêtres principales ne fonctionnent, faites

fileMenu->exec();