我知道WINAPI中的一些解决方案,枚举所有可见窗口,以检查与我的窗口相交...
但是我需要针对Qt的跨平台解决方案(3或4 - 没有完美),也许有人可以帮助我吗?
感谢。
答案 0 :(得分:0)
要简单检查您的窗口是否处于活动状态/是否具有键盘焦点,您可以检查Qt::WindowState是否为Qt :: WindowActive。
要检查窗口是否与其他窗口重叠/交叉(我认为那是你的问题),我只能考虑使用一些解决方法。
QWidget类有一个返回QRegion的函数QWidget::visibleRegion()。基本上,这个区域是可以发生绘画事件的空间,这意味着这是其他任何事物都没有覆盖的空间。您可以检查此区域的大小是否大致与窗口大小相匹配,以查看是否有其他内容覆盖了任何空间。
我没有对此进行测试,因此我无法告诉您它是否适用于您需要它的所有平台。
修改:根据您的评论:
这是我在关于visibleRegion()
的qt 4.6参考中找到的:
返回未显眼的区域 油漆事件可能发生。对于可见 小部件,这是近似的 其他小部件未覆盖的区域。
因此,如果这个不明显区域的大小大约是窗口的大小,那么您的窗口就不会被任何东西覆盖。