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