我正在使用QWindow
来包含一些经过严格优化的OpenGL代码。
为方便用户交互,我有一种模式,光标下的数据显示在工具提示中。
当另一个窗口遮挡发送工具提示事件的窗口时,这会导致UX问题。在下面的屏幕截图中,工具提示是在Firefox窗口上绘制的(这是不受欢迎的)。
什么是范式解决方案?有没有办法测试窗口的一部分是否被遮挡?
调用工具提示的函数类似于:
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;
}
答案 0 :(得分:2)
我不知道是否有跨平台方式来测试特定区域是否被其他应用程序窗口遮挡,但您可以:
QWindow::isActive()
,IIRC)并且仅显示工具提示(如果是),或