PySide2 передает события мыши в систему

1

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

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

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

  • QtWidgets.QWidget.setWindowFlags(QtCore.Qt.WindowTransparentForInput)
  • QtWidgets.QWidget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
  • QtWidgets.QWidget.setMask(QtGui.QRegion(self.geometry()))
  • Подклассификация mousePressEvent и игнорирование события
  • 1
    попробуйте с: w.setWindowFlags(w.windowFlags() | QtCore.Qt.WindowTransparentForInput| QtCore.Qt.X11BypassWindowManagerHint)
  • 0
    Это помогло мне решить это. Если вы сделаете это в ответ, я буду любезно принять это :)
Теги:
pyside2
qmouseevent

1 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню