main.cpp
Code:
#include <QMainWindow>
#include <QMenuBar>
#include <QDebug>
#include "application.h"
int
main (int argc, char **argv)
{
Application app(argc, argv);
QAction action(QString("Action"), 0);
QMenu menu("Fremantle");
menu.addAction(&action);
QObject::connect(&menu, SIGNAL(aboutToShow()),
&app, SLOT(menuAboutToShow()));
QObject::connect(&menu, SIGNAL(aboutToHide()),
&app, SLOT(menuAboutToHide()));
QObject::connect(&menu, SIGNAL(hovered(QAction*)),
&app, SLOT(menuHovered(QAction*)));
QMainWindow win;
win.menuBar()->addMenu(&menu);
win.show();
return app.exec();
}
application.h:
Code:
#ifndef APPLICATION_H
#define APPLICATION_H
#include <QApplication>
#include <QAction>
class Application : public QApplication
{
Q_OBJECT
public:
Application(int &argc, char **argv);
protected slots:
void menuAboutToShow();
void menuAboutToHide();
void menuHovered(QAction* action);
};
#endif // APPLICATION_H
application.cpp:
Code:
#include <QDebug>
#include "application.h"
Application::Application(int &argc, char **argv)
: QApplication(argc, argv)
{
}
void Application::menuAboutToShow()
{
QWidget *menu = qobject_cast<QWidget *>(sender());
qDebug() << __PRETTY_FUNCTION__ << menu->isVisible();
}
void Application::menuAboutToHide()
{
QWidget *menu = qobject_cast<QWidget *>(sender());
qDebug() << __PRETTY_FUNCTION__ << menu->isVisible();
}
void Application::menuHovered(QAction* action)
{
Q_UNUSED(action);
QWidget *menu = qobject_cast<QWidget *>(sender());
qDebug() << __PRETTY_FUNCTION__ << menu->isVisible();
menu->setVisible(false);
}