c – QMenu中QActions的QTooltip
发布时间:2020-12-16 07:51:27 所属栏目:百科 来源:网络整理
导读:我希望能够显示QMenu项目的工具提示(QActions).我所取得的最好成绩是将QAction的悬停信号连接到QTooltip节目: connect(action,QAction::hovered,[=]{ QToolTip::showText(QCursor::pos(),text,this);}); 问题是有时程序会将工具提示定位在菜单下方,特别是在
我希望能够显示QMenu项目的工具提示(QActions).我所取得的最好成绩是将QAction的悬停信号连接到QTooltip节目:
connect(action,&QAction::hovered,[=]{ QToolTip::showText(QCursor::pos(),text,this); }); 问题是有时程序会将工具提示定位在菜单下方,特别是在更改菜单时. 有没有办法强制工具提示显示在顶部? 解决方法
您可以继承QMenu并重新实现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); QAction *action1 = menu->addAction("First"); action1->setToolTip("First action"); QAction *action2 = menu->addAction("Second"); action2->setToolTip("Second action"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |