PySide2 передает события мыши в систему - PullRequest
0 голосов
/ 16 октября 2018

Я использую QDialog с включенной прозрачностью, чтобы выбрать область экрана для инструмента захвата экрана.Когда пользователь щелкает внутри прозрачного виджета, я хочу игнорировать событие мыши, чтобы система обрабатывала его.Возможно ли это?

Я пытаюсь добиться этого в Linux.

Некоторые вещи, которые я пытался безуспешно:

  • QtWidgets.QWidget.setWindowFlags(QtCore.Qt.WindowTransparentForInput)
  • QtWidgets.QWidget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
  • QtWidgets.QWidget.setMask(QtGui.QRegion(self.geometry()))
  • Подклассы mousePressEvent и игнорирование события

1 Ответ

0 голосов
/ 18 октября 2018

Вы должны использовать флаг X11BypassWindowManagerHint, чтобы опустить диспетчер окон рядом с WindowTransparentForInput, чтобы система знала, что она должна только показать окно, но не уведомляет вас о входных данных.

w.setWindowFlags(w.windowFlags() | 
    QtCore.Qt.WindowTransparentForInput | 
    QtCore.Qt.X11BypassWindowManagerHint)
...