微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – QMenu中QActions的QTooltip

我希望能够显示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");

原文地址:https://www.jb51.cc/c/115441.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐