here's a snapshot of the GUI. I want to perform simple actions solely by clicking on QMenu object Help. This QMenu object does NOT have any submenus.
snap3.jpg
Can you please advise me how to perform actions when only the QMenu is clicked Here's what I have tried, but I got an empty output.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QSignalMapper>
namespace Ui {
class MainWindow;
}
{
Q_OBJECT
public:
explicit MainWindow
(QWidget *parent
= 0);
~MainWindow();
private:
Ui::MainWindow *ui;
void createActions();
private slots:
void help();
};
#endif // MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QSignalMapper>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
void createActions();
QSignalMapper *pSignalMapper;
private slots:
void help();
};
#endif // MAINWINDOW_H
To copy to clipboard, switch view to plain text mode
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
createActions();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::createActions()
{
connect(ui
->menuHelp,
SIGNAL(triggered
(QAction*)),
this,
SLOT(help
()));
}
void MainWindow::help()
{
qDebug()<<"inside help qdialog";
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
createActions();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::createActions()
{
pSignalMapper = new QSignalMapper(this);
connect(ui->menuHelp, SIGNAL(triggered(QAction*)), this, SLOT(help()));
}
void MainWindow::help()
{
qDebug()<<"inside help qdialog";
}
To copy to clipboard, switch view to plain text mode
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <ui_mainwindow.h>
int main(int argc, char *argv[])
{
MainWindow w;
w.show();
return a.exec();
}
#include "mainwindow.h"
#include <QApplication>
#include <ui_mainwindow.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
To copy to clipboard, switch view to plain text mode
Output when I click on Help QMenu, absolutely nothing:
Starting E:\Qt2\modules\guiPrototype2\build-guiPrototype2-Desktop_Qt_5_2_0_MSVC2010_32bit-Debug\debug\guiPrototype2.exe...
Starting E:\Qt2\modules\guiPrototype2\build-guiPrototype2-Desktop_Qt_5_2_0_MSVC2010_32bit-Debug\debug\guiPrototype2.exe...
To copy to clipboard, switch view to plain text mode
Added after 9 minutes:
This works:
void MainWindow::createActions()
{
[..]
connect(ui->menuHelp, SIGNAL(aboutToShow()), this, SLOT(help()));
}
void MainWindow::help()
{
qDebug()<<"inside help qdialog";
}
void MainWindow::createActions()
{
[..]
connect(ui->menuHelp, SIGNAL(aboutToShow()), this, SLOT(help()));
}
void MainWindow::help()
{
qDebug()<<"inside help qdialog";
}
To copy to clipboard, switch view to plain text mode
Bookmarks