首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不依赖鼠标的QTooltip

不依赖鼠标的QTooltip
EN

Stack Overflow用户
提问于 2014-01-28 06:59:27
回答 1查看 942关注 0票数 1

目前,我正试图在小部件的focusOutEvent上显示工具提示。这个工具提示基本上验证了Widget (QLineEdit)中的数据。现在的问题是,我希望使用工具提示来显示错误或问题。以下是我正在做的事情

代码语言:javascript
复制
void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
  QLineEdit::focusOutEvent(e);
  QToolTip::showText( this->mapToGlobal( QPoint( 0, 0 ) ), "Something got it" );
  emit(focussed(false));
}

现在的问题是,QTooltip没有显示,这可能是因为鼠标在移动。我的问题是,如何使QTooltip显示,并保持在那里,直到我希望关闭它??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 10:14:55

只有当QHelpEvent被截获时,工具提示才会出现。虽然您可以使用focusOutEvent使用QCoreApplication::PostEvent和子类QWidget::event发送一个这样的

代码语言:javascript
复制
bool MyLineEdit::event (QEvent *event)
{
    if (event->type() == QEvent::ToolTip) {
         QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
         QToolTip::showText(helpEvent->globalPos(), "Something got it");

         return false;
     }
     return QWidget::event(event);
}

,这有两种不良后果。

1)每当工具提示正常显示时(即当鼠标指针停留在小部件上几秒钟时),事件仍然会被触发。您必须实现某种识别机制来区分您自己的帮助事件和其他事件。

2)工具提示只有在各自的小部件聚焦时才是活动的。因此,在焦点丢失时显示工具提示只会显示几秒钟,直到下一个事件循环被处理为止。

对于后者,可能有一个解决办法,但在这一点上,最好将工具提示保留在它们的预期目标上,并实现您自己的伪工具提示,您可以直接控制它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21398883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档