显示工具提示时,“实时”更新窗口小部件工具提示

问题描述 投票:0回答:1

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

qt
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.