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);
}
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
Sto usando QT 4.7.4 su MAC OS LION –
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