首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在显示前测试是否获取了QToolTip

在显示前测试是否获取了QToolTip
EN

Stack Overflow用户
提问于 2017-02-13 15:42:34
回答 1查看 44关注 0票数 0

我使用QWindow来包含一些经过高度优化的OpenGL代码。

为了方便用户交互,我提供了一种模式,在该模式中,光标下的数据显示在工具提示中。

当另一个窗口遮挡了发送工具提示事件的窗口时,这会导致UX问题。在下面的屏幕截图中,工具提示被绘制在Firefox窗口的顶部(这是不需要的)。

范例解决方案是什么?有没有办法测试窗口的一部分是否被遮挡了?

调用工具提示的函数如下所示:

代码语言:javascript
复制
if (!qIsNaN(value_under_cursor))
{
    auto state = QApplication::applicationState();
    auto text = QString::number(value_under_cursor, 'f', 3);
    static QString old_value;
    if (text != old_value)
    {
        auto static last_show = timestamp();
        auto now = timestamp();
        auto re_raster = ((now - last_show) >= ms_to_chrono(100));
        if (re_raster)
        {
            QToolTip::showText(current_mouse_coordinates_in_global, text);
            last_show = now;
        }
    }
    old_value = text;
}
EN

回答 1

Stack Overflow用户

发布于 2017-02-13 16:03:06

我不知道是否有一种跨平台的方法来测试特定的区域是否被另一个应用程序窗口遮挡了,但你可以:

  • 检查窗口是否处于焦点状态(QWindow::isActive()、IIRC),如果是,则仅显示工具提示,或者使用OpenGL显示
  • 渲染工具提示。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42198894

复制
相关文章

相似问题

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