1

我正在使用QDialog启用透明度来为屏幕捕获工具选择屏幕区域。当用户在透明小部件内单击时,我想忽略鼠标事件以便系统处理它。这可能吗?

我正在尝试在 Linux 上实现这一目标。

我尝试过的一些事情没有成功:

  • QtWidgets.QWidget.setWindowFlags(QtCore.Qt.WindowTransparentForInput)
  • QtWidgets.QWidget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
  • QtWidgets.QWidget.setMask(QtGui.QRegion(self.geometry()))
  • 子类mousePressEvent化和忽略事件
4

1 回答 1

1

您必须使用该标志X11BypassWindowManagerHint,以便省略旁边的窗口管理器,WindowTransparentForInput以便系统知道它只需要显示窗口但不会通知您有关输入的信息。

w.setWindowFlags(w.windowFlags() | 
    QtCore.Qt.WindowTransparentForInput | 
    QtCore.Qt.X11BypassWindowManagerHint)
于 2018-10-18T03:05:32.710 回答