'生活'显示工具提示时更新窗口小部件的工具提示

时间:2017-12-27 11:40:53

标签: qt

我需要一个' live'某个小部件的工具提示。窗口小部件为某个线程活动提供了一个可视化界面(基本上告知了进度)。此活动会发送常规消息,我希望这些消息可以作为小部件的工具提示使用。使用widget->setToolTip(message);实现这一点非常简单,但问题是当工具提示已经显示时,显示的消息不会动态更新。只有当鼠标在小部件上移动并且工具提示显示在不同的位置时,它才会刷新。我尝试使用event()QEvent::ToolTip找到一些解决方案,但这似乎会影响其他正常小部件的工具提示,而不会生成' live'工具提示消息因为QToolTip::showText()QToolTip::hideText()具有全球影响力。任何想法如何破解这个?

1 个答案:

答案 0 :(得分:1)

好吧,像往常一样,我在SO上发布问题之后就找到了解决方案。方法updateToolTip检查是否显示了工具提示,并且只有当鼠标光标位于相关小部件上时(它基于假设它没有需要工具提示的子小部件),文本才会更新'现场'。

void TaskWidget::updateToolTip(const QString &message)
{
    setToolTip(message);

    if (!QToolTip::isVisible())
        return;

    QPoint p = mapFromGlobal(QCursor::pos());
    if (p.x() >= 0 && p.y() >= 0 && p.x() < width() && p.y() < height())
        QToolTip::showText(QCursor::pos(), message);
}
相关问题