2011-11-01 8 views
6

Sono nuovo alla programmazione QT. Voglio creare una barra dei menu semplice con due menu e diverse azioni (3 azioni per il menu FILE e un'azione per il menu VISUALIZZA). Ho creato il metodo Menius() dove creo quei menu e azioni quindi aggiungo menu creati alla barra dei menu, ma quando eseguo l'app, non mostra questa barra dei menu e non so perché. Qualcuno può dire qual è il problema?MenuBar issue QT 4.7.4 su MAC OS LION

Il codice sorgente di mainwindow.cpp

#include <QtGui> 
#include <QAction> 
#include "MainWindow.h" 

MainWindow::MainWindow() { 

     // Creeam fereastra principala 
    QWidget *window = new QWidget; 
    setCentralWidget(window); 

    // Creeam eticheta unde vom afisa titlul item-ului selectat 
    // Implicit va avea un titlu predefinit 
    infoLabel = new QLabel("Selectati un item va rog "); 

    createActions(); 
    createMenus(); 

    // Creeam un layout pentru pozitionarea etichetei 
    QHBoxLayout *layout = new QHBoxLayout; 

    layout->addWidget(infoLabel); 
    window->setLayout(layout); 

    setWindowTitle("GUI"); 
    setMinimumSize(300, 300); 
    resize(480,320); 
} 

void MainWindow::contextMenuEvent(QContextMenuEvent *event) { 

    QMenu menu(this); 
    menu.addAction(newAction); 
    menu.addAction(openAction); 
    menu.addAction(closeAction); 
    menu.addAction(preferencesAction); 
    menu.exec(event->globalPos()); 
} 

void MainWindow::new_() { 

    infoLabel->setText("A fost selectat : NEW"); 
} 

void MainWindow::open() { 

    infoLabel->setText("A fost selectat : OPEN"); 
} 

void MainWindow::close() { 

} 

void MainWindow::preferences() { 

    infoLabel->setText("A fost selectat : PREFERENCES"); 
} 


void MainWindow::createActions() 
{ 
    newAction = new QAction("New", this); 
    connect(newAction, SIGNAL(triggered()), this, SLOT(new_())); 

    openAction = new QAction("Open", this); 
    connect(openAction, SIGNAL(triggered()), this, SLOT(open())); 

    closeAction = new QAction("Close", this); 
    connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); 

    preferencesAction = new QAction("Preferences", this); 
    connect(preferencesAction, SIGNAL(triggered()), this, SLOT(preferences())); 
} 

void MainWindow::createMenus() 
{ 
    // Creeaza sectiunea File 
    fileMenu = new QMenu ("File"); 

    // Adauga actiunile new,open si close la sectiunea File 
    fileMenu->addAction(newAction); 
    fileMenu->addAction(openAction); 
    fileMenu->addAction(closeAction); 


    // Creeaza sectiunea View 
    viewMenu = new QMenu ("View"); 

    //Adauga actiunea preferences la sectiunea View 
    viewMenu->addAction(preferencesAction); 

    menuBar()->addMenu(fileMenu); 
    menuBar()->addMenu(viewMenu); 
} 
+0

Ho appena provato il codice con Qt 4.5.2 su Linux e ha funzionato correttamente. Non riesco a vedere niente di sbagliato in questo. Quale versione di Qt stai usando e su quale piattaforma sei? – Troubadour

+0

Sto usando QT 4.7.4 su MAC OS LION –

+0

Ottieni un menu se fai 'QMenuBar * menuBar = new QMenuBar (0);' e poi installalo nella finestra principale con 'setMenuBar (menuBar)'? Lo menziono solo come [docs per QMainWindow] (http://doc.trolltech.com/4.7/qmainwindow.html#menuBar) menzionando questo dovrebbe avere un effetto su Mac. So che non è quello che vuoi fare, solo curioso di sapere se ha un effetto. – Troubadour

risposta

Problemi correlati