Qt:QMenu的QAction显示Tooltip

QMenu的QAction显示Tooltip,对此,网上更多的方法是如下的:

将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");
 

实际上,正确方法应该是:

pMenu->setToolTipsVisible(true);

简简单单一句即可解决。可能上面的代码是早期的Qt版本中的解决方案,但网上很难找到Qt5之后的版本的正确解法,此处纠正。

 

转载请注明来源,谢谢。

有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:[email protected]


老刀的技术日志 » Qt:QMenu的QAction显示Tooltip

发表评论