首页 > 解决方案 > 如何禁用 QSplashScreen 的默认“点击关闭”行为?

问题描述

我正在使用 QSplashScreen 免费获得一些所需的行为:图像显示、居中、轻松无框。

问题是对于我的用例,我不希望点击图像来关闭屏幕。

我已经尝试过覆盖 eventFilter ,因为很多关于这种行为的 c++ 帖子都暗示了这一点,但是在 PySide 2.xx / 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")

我还缺少其他简单的东西吗?

标签: pythonpyside2

解决方案


出于我的目的,我所要做的就是覆盖 mousePressEvent() 并通过。

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

这可以防止点击关闭屏幕,但不会影响我在初始屏幕顶部布局的 UI 元素上的鼠标事件,因此它勾选了我的所有框。


推荐阅读