首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QTooltip for QActions in QMenu

QTooltip for QActions in QMenu
EN

Stack Overflow用户
提问于 2014-11-27 00:18:14
回答 2查看 5.8K关注 0票数 14

我希望能够显示ToolTips for QMenu items (QActions)。我所取得的最好成绩是将QAction的悬停信号连接到QTooltip显示:

代码语言:javascript
运行
复制
connect(action, &QAction::hovered, [=]{
    QToolTip::showText(QCursor::pos(), text, this);
});

问题是,有时程序会将工具提示放置在菜单下面,特别是在更改菜单时。

有没有办法强迫工具提示显示在顶部?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-27 04:16:22

您可以子类QMenu和重新实现QMenu::event()来拦截QEvent::ToolTip事件,并调用QToolTip::showText来设置活动操作的工具提示:

代码语言:javascript
运行
复制
#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);
    }
};

现在,您可以使用自定义菜单,例如:

代码语言:javascript
运行
复制
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");
票数 8
EN

Stack Overflow用户

发布于 2016-11-24 15:55:34

从Qt5.1开始,您可以使用QMenu的属性toolTipsVisible,默认情况下它被设置为false

相关Qt建议

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27161122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档