user336063
user336063

Reputation:

How to disable tooltips on QToolbar?

How does one disable tooltips on a Qt4 QToolBar?

Using QAction::setToolTip("") does nothing and I can't find any settings related to disabling tooltips on either a QAction or QToolbar!

Example:

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

Upvotes: 2

Views: 1526

Answers (1)

user336063
user336063

Reputation:

An event filter has to be used in this scenario.

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

I'm not quite sure how to localize this to just the Toolbar but I don't like tooltips anyway so this is a quick way to disable all of them.

Upvotes: 1

Related Questions