Qt检查QTool小部件是否在顶部(对用户可见)

时间:2017-06-23 05:52:31

标签: qt qwidget

我可以检查isVisible(),如果一个小部件完全可见,但是当设置了Flag QTool时,有时会发生小部件在另一个小部件下的堆栈中,因此用户无法看到它。是否有一种方法可以提供这些信息?

问候 乔治

2 个答案:

答案 0 :(得分:1)

检查visibleRegion()方法怎么样?如果该项目被覆盖,它将返回一个空的QRegion。您可以使用isEmpty()

进行检查

您还可以使用raise()

将小部件置于顶部

答案 1 :(得分:0)

我在Windows上的PyQt5有类似的问题。 Qt方法visibleRegion()isVisible()表示窗口小部件实际上是可见的。唯一对我有用的解决方案:

import win32gui, win32con  # from pywin32 package

def is_widget_obscured(widget):
    hwnd = widget.winId()
    hwnd_above = win32gui.GetWindow(hwnd, win32con.GW_HWNDPREV)
    return hwnd_above != 0

GetWindow()的文档:https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getwindow