c – QMenu中QActions的QTooltip

c – QMenu中QActions的QTooltip,第1张

概述我希望能够显示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_OBJECTpublic:    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");
总结

以上是内存溢出为你收集整理的c – QMenu中QActions的QTooltip全部内容,希望文章能够帮你解决c – QMenu中QActions的QTooltip所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1233049.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存