目前,我正试图在小部件的focusOutEvent上显示工具提示。这个工具提示基本上验证了Widget (QLineEdit)中的数据。现在的问题是,我希望使用工具提示来显示错误或问题。以下是我正在做的事情
void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
QLineEdit::focusOutEvent(e);
QToolTip::showText( this->mapToGlobal( QPoint( 0, 0 ) ), "Something got it" );
emit(focussed(false));
}现在的问题是,QTooltip没有显示,这可能是因为鼠标在移动。我的问题是,如何使QTooltip显示,并保持在那里,直到我希望关闭它??
发布于 2014-01-28 10:14:55
只有当QHelpEvent被截获时,工具提示才会出现。虽然您可以使用focusOutEvent使用QCoreApplication::PostEvent和子类QWidget::event发送一个这样的
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)工具提示只有在各自的小部件聚焦时才是活动的。因此,在焦点丢失时显示工具提示只会显示几秒钟,直到下一个事件循环被处理为止。
对于后者,可能有一个解决办法,但在这一点上,最好将工具提示保留在它们的预期目标上,并实现您自己的伪工具提示,您可以直接控制它。
https://stackoverflow.com/questions/21398883
复制相似问题