QToolTip::showText 鼠标释放后消失

Posted

技术标签:

【中文标题】QToolTip::showText 鼠标释放后消失【英文标题】:QToolTip::showText disappears after mouse release 【发布时间】:2016-06-17 08:26:37 【问题描述】:

我想在 QGLWidget 上显示工具提示,但我必须调用; QToolTip::showText(pos, "Message", qglwidgetPtr, rect(), 5000); 在另一个班级。

因此,释放鼠标按钮后工具提示会消失。如果我不释放它,工具提示会在 5000 毫秒后消失。我不明白消失的问题。我认为它可能是触发消失 QGL 小部件绘制事件,但我不确定。

【问题讨论】:

相关链接合集:***.com/a/21365874/2707359 我之前看过这个相关链接。但无助于解决问题 【参考方案1】:

首先,让我们了解问题的原因。当用户将鼠标光标移到不在工具提示上方时,工具提示应该隐藏。因此,当您在其他地方释放鼠标按钮时,您的操作系统会捕获不在工具提示上方(不在该工具提示的起点附近)的鼠标事件,因此它会隐藏工具提示。

因此,我的解决方案如下:创建 QTimer 并根据需要(5 秒)每秒显示几次工具提示。你可以这样做,因为在文档中说

如果文本与当前显示的工具提示相同,则提示不会移动

(即可以使用相同的文本多次调用showText

要创建计时器,您可以使用以下代码:

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100); // ten times per second

update() 函数的主体中,您可以比较当前时间和第一次显示此工具提示的时间,并在仍然需要时显示您的工具提示(即,如果显示时间少于 5 秒)。

howLongShown = curTime - startTime; // startTime here is the moment of first showing of the tooltip
if (howLongShown < 5000)
  QToolTip::showText(pos, "Message", qglwidgetPtr, rect(), 5000 - howLongShown);

【讨论】:

其实我想用计时器解决,但我不想要它。现在我觉得别无选择。像你一样创建计时器并解决问题。谢谢

以上是关于QToolTip::showText 鼠标释放后消失的主要内容,如果未能解决你的问题,请参考以下文章

QMenu 中用于 QActions 的 QTooltip

java工作复习——鼠标事件——action类——单击鼠标左键不释放以及释放的操作

当按下鼠标并释放鼠标时,如何保存鼠标位置?

模拟鼠标释放 Pyqt

在鼠标单击期间防止键盘事件(未释放)

在opengl中,如何将鼠标跟随更改为鼠标单击、拖动和释放?