我在QToolBar
上添加了一个QAction
,但我无法从按钮中删除工具提示。
我试图覆盖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);
}