我使用启用了透明度的QDialog
来选择屏幕捕获工具的屏幕区域。当用户在透明小部件内单击时,我想忽略鼠标事件,以便系统处理它。这可能吗?
我正在尝试在Linux上实现这一目标。
我尝试过的一些事情没有成功:QtWidgets.QWidget.setWindowFlags(QtCore.Qt.WindowTransparentForInput)
QtWidgets.QWidget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
QtWidgets.QWidget.setMask(QtGui.QRegion(self.geometry()))
子类化mousePressEvent
并忽略事件
最佳答案
您必须使用标志X11BypassWindowManagerHint
,以便省略WindowTransparentForInput
旁边的窗口管理器,以便系统知道它仅必须显示窗口,而不会通知您输入信息。
w.setWindowFlags(w.windowFlags() |
QtCore.Qt.WindowTransparentForInput |
QtCore.Qt.X11BypassWindowManagerHint)