显示工具提示时,小部件的工具提示的"实时"更新



我需要一个特定小部件的'Live'工具提示。小部件为某个螺纹活动提供了一个视觉接口(基本上是为了进度的信息)。此活动会发送常规消息,我希望这些消息可作为Widget的工具提示。widget->setToolTip(message);实现这一点非常简单,但问题是,当已经显示了工具提示时,显示的消息不会动态更新。仅当鼠标移动在小部件上时才刷新,并且在其他位置显示工具尖端。我尝试使用event()QEvent::ToolTip也找到一些解决方案,但这似乎干扰了其他普通小部件的工具提示,而没有"实时"工具提示,因为QToolTip::showText()QToolTip::hideText()具有全球影响。有什么想法如何破解?

好吧,像往常一样,在发布问题之后,我就找到了解决方案。方法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);
}

最新更新