如何禁用 QToolbar 上的工具提示?

How to disable tooltips on QToolbar?

如何禁用 Qt4 QToolBar 上的工具提示?

使用 QAction::setToolTip("") 什么都不做,我找不到任何与禁用 QAction 或 QToolbar 上的工具提示相关的设置!

示例:

Toolbar.h

#ifndef TOOLBAR_H
#define TOOLBAR_H

#include <QtGui>

class Toolbar : public QToolBar
{
    Q_OBJECT

public:
    Toolbar()
    {
        QAction *action = this->addAction("Action");
        action->setToolTip("");
    }

    bool event(QEvent *event)
    {
        if(event->type() == QEvent::ToolTip)
        {
            qDebug() << "QEvent::ToolTip";
        }

        return QToolBar::event(event);
    }
};

#include "moc_Toolbar.cpp"

#endif // TOOLBAR_H

main.cpp

#include <QtGui>
#include "Toolbar.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow window;
    Toolbar *toolbar = new Toolbar;

    window.addToolBar(toolbar);
    window.setCentralWidget(new QWidget());

    window.show();

    return app.exec();
}

在这种情况下必须使用事件过滤器。

Toolbar.h

#ifndef TOOLBAR_H
#define TOOLBAR_H

#include <QtGui>

class Toolbar : public QToolBar
{
    Q_OBJECT

public:
    Toolbar()
    {
        QAction *action = this->addAction("Action");
    }

    bool eventFilter(QObject *object, QEvent *event)
    {
        if(event->type() == QEvent::ToolTip)
        {
            return true;
        }
        return false;
    }
};

#include "moc_Toolbar.cpp"

#endif // TOOLBAR_H

main.cpp

#include <QtGui>
#include "Toolbar.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow window;
    Toolbar *toolbar = new Toolbar;

    qApp->installEventFilter(toolbar);

    window.addToolBar(toolbar);
    window.setCentralWidget(new QWidget());

    window.show();

    return app.exec();
}

我不太确定如何将其本地化到工具栏,但我不喜欢工具提示,所以这是禁用所有工具提示的快速方法。