Как отключить стандартное поведение QSplashScreen «щелкать мышью»? - PullRequest
0 голосов
/ 04 апреля 2019

Я использую QSplashScreen, чтобы получить желаемое поведение бесплатно: отображение изображения, центрирование, простота безрамки.

Проблема в том, что в моем случае использования я не хочу, чтобы щелчки по изображению закрывали экран.

Я попытался переопределить eventFilter, как об этом говорят многие посты c ++ об этом поведении, но в PySide 2.x.x / Qt5 этот метод никогда не вызывается.

class MySplashScreen(QtWidgets.QSplashScreen):
    def __init__(self, my_pixmap):
        super(MySplashScreen, self).
            __init__(my_pixmap, QtCore.Qt.FramelessWindowHint)

        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint |
                            QtCore.Qt.FramelessWindowHint)

    def eventFilter(self, object, event):
        print("never called")

Есть ли что-то еще, чего мне не хватает?

1 Ответ

0 голосов
/ 04 апреля 2019

Для моих целей все, что мне нужно было сделать, это переопределить mousePressEvent () и pass.

def mousePressEvent(self, event):
    # disable default "click-to-dismiss" behaviour
    pass

Это не позволяло кликам закрывать экран, но не влияло на события мыши на элементах пользовательского интерфейса, которые я выложил поверхв верхней части заставки, поэтому все мои поля отмечены галочкой.

...