不依赖鼠标的QToolTip
QTooltip that does not depend on mouse
我当前正在尝试在窗口小部件的focusoutevent上显示一个工具提示。该工具提示基本上验证了小部件内部的数据(qlineedit)。现在问题是我想使用工具提示显示错误或问题。这是我在做的
void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
QLineEdit::focusOutEvent(e);
QToolTip::showText( this->mapToGlobal( QPoint( 0, 0 ) ), "Something got it" );
emit(focussed(false));
}
现在问题是未显示qtooltip,这可能是因为鼠标正在移动。我的问题是如何将qtooltip显示并保留在那里,直到我希望将其关闭?
仅当QHelpEvent
被拦截时,工具提示才会显示。虽然您可以使用QCoreApplication::PostEvent
和子类QWidget::event
从focusOutEvent
发送一个
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)工具提示仅在相应的小部件聚焦时活跃。因此,在丢失焦点时显示工具提示只会显示几秒钟,直到处理下一个事件循环为止。
后者可能会有解决方法,但是在这一点上,最好将工具提示以其预期的目的离开工具,并实现您自己的伪tooltip。
相关文章:
- WinAPI挂钩鼠标
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- Win32 发送输入鼠标移动滞后并冻结
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在QSplashScreen中禁用鼠标单击
- C++鼠标单击时的屏幕截图不起作用
- 如何将鼠标坐标转换为"mm"
- 标签检测鼠标单击 c++
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在 OpenGL 中使用透视与正交投影时的光线投射(鼠标拾取)
- 如何使用鼠标单击选择多个 QLabel 对象?
- QTooltip的怪异行为应遵循Qgraphictem的鼠标