我在 aQAction
上添加了 a QToolBar
,但无法从按钮中删除工具提示。
我试图覆盖event
,eventfilter
使用event->type == Qt::Tooltip
但没有帮助。
请帮我。
在工具栏上添加操作时:
QToolButton
QToolButton::setDefaultAction
将操作作为参数传递。setToolTip(action->toolTip());
action->toolTip()
返回tooltip
工具提示是否为空,它返回text
。因此,您将始终在按钮上有一些工具提示。使用上面的解释,您可以想到很多解决问题的方法。
例如,何时QToolbar
创建(并且可能显示)用于toolbar->findChildren<QToolButton*>
查找按钮:
foreach(QToolButton* button, toolbar->findChildren<QToolButton*>())
{
button->setToolTip(QString());
}
注意:当您更改操作的文本时,相应的按钮将重新创建工具提示。您可以使用按钮的事件过滤器来处理工具提示事件。
编辑:添加了一个例子:
Ui
包含带有操作的工具栏。
testwindow::testwindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
foreach(QToolButton* button, ui.mainToolBar->findChildren<QToolButton*>())
{
button->setToolTip(QString());
}
}
当您更改操作(文本、启用状态...)时,会QToolButton
更新工具提示。在这种情况下,您需要永久防止工具提示出现:
testwindow::testwindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
foreach(QToolButton* button, ui.mainToolBar->findChildren<QToolButton*>())
{
button->installEventFilter(this);
}
}
bool testwindow::eventFilter(QObject* o, QEvent* e)
{
if (e->type() == QEvent::ToolTip)
{
return true;
}
return QMainWindow::eventFilter(o, e);
}