Я использую 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
чтобы система WindowTransparentForInput
, что он должен показывать только окно, но не уведомляет вас о входах.
w.setWindowFlags(w.windowFlags() |
QtCore.Qt.WindowTransparentForInput |
QtCore.Qt.X11BypassWindowManagerHint)
w.setWindowFlags(w.windowFlags() | QtCore.Qt.WindowTransparentForInput| QtCore.Qt.X11BypassWindowManagerHint)