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

时间:2015-01-18 20:19:13

标签: c++ qt4 tooltip

如何禁用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();
}

1 个答案:

答案 0 :(得分:0)

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

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();
}

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