我希望能够显示ToolTips for QMenu items ( QAction s)。我所取得的最好成绩是将 QAction 的悬停信号连接到 QTooltip 显示:
QMenu
QAction
QTooltip
connect(action, &QAction::hovered, [=]{ QToolTip::showText(QCursor::pos(), text, this); });
问题是,有时程序会将工具提示放置在菜单下面,特别是在更改菜单时。
有没有办法强迫工具提示显示在顶部?
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
您可以子类 QMenu 和重新实现 QMenu::event() 来拦截 QEvent::ToolTip 事件,并调用 QToolTip::showText 来设置活动操作的工具提示:
QMenu::event()
QEvent::ToolTip
QToolTip::showText
#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); };
现在,您可以使用自定义菜单,例如:
Menu *menu = new Menu(); menu->setTitle("Test menu"); menuBar()->addMenu(menu);