当工具提示显示时,“实时”更新小工具的工具提示

当工具提示显示时,“实时”更新小工具的工具提示

问题描述:

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

那么,像往常一样,我找到了解决方案之后,我发布了关于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); 
}