You can subclass QMenu
and override QMenu::event()
to catch the QEvent::ToolTip
event and call QToolTip::showText
to set a tooltip for the active action:
#include <QtGui> class Menu : public QMenu { Q_OBJECT public: Menu(){} bool event (QEvent * e) { const QHelpEvent *helpEvent = static_cast <QHelpEvent *>(e); if (helpEvent->type() == QEvent::ToolTip && activeAction() != 0) { QToolTip::showText(helpEvent->globalPos(), activeAction()->toolTip()); } else { QToolTip::hideText(); } return QMenu::event(e); } };
Now you can use your menu:
Menu *menu = new Menu(); menu->setTitle("Test menu"); menuBar()->addMenu(menu); QAction *action1 = menu->addAction("First"); action1->setToolTip("First action"); QAction *action2 = menu->addAction("Second"); action2->setToolTip("Second action");
source share