鼠标释放后,QToolTip :: showText消失

时间:2016-06-17 08:26:37

标签: c++ qt5.5 qglwidget

我想在QGLWidget上显示工具提示,但我必须打电话; QToolTip::showText(pos, "Message", qglwidgetPtr, rect(), 5000); 在另一堂课。

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

1 个答案:

答案 0 :(得分:0)

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

所以,我的解决方案如下:创建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);
相关问题