我在QAction
上添加了QToolBar
,但我无法从按钮中删除工具提示。
我尝试使用event
覆盖eventfilter
,event->type == Qt::Tooltip
,但它没有帮助。
请帮帮我。
答案 0 :(得分:3)
在工具栏上添加操作时:
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);
}