八月 25

Qt的事件机制(一)

import sys
from PySide2 import QtWidgets as qtw
from PySide2 import QtCore as qtc

def pressed_slot():
    print('按钮被点击了-slot')

# 为了查看QApplication.notify(receiver, event)的方法
# 我们进行方法的override
class App(qtw.QApplication):

    # arg__1为receiver,arg__2为event
    def notify(self, arg__1, arg__2):
        # 判断receiver为QPushButton的子类,同时判断event的类型为qtc.QEvent.MouseButtonPress
        if arg__1.inherits('QPushButton') and arg__2.type() == qtc.QEvent.MouseButtonPress:
            print('receiver: ', arg__1)
            print('event: ', arg__2)

        return super(App, self).notify(arg__1, arg__2)

# 为了查查看receiver.event(event)方法
# 我们进行方法的override
class Btn(qtw.QPushButton):

    # e 为接收的event
    def event(self, e):
        # 注意判断event的类型需要用event.type()方法
        if e.type() == qtc.QEvent.MouseButtonPress:
            print('按钮被点击了-receiver.event')

        return super(Btn, self).event(e)

    # 由event方法分发的具体事件处理方法
    # 信号就在这些具体事件处理方法中发射
    def mousePressEvent(self, e):
        print('鼠标被按下了-具体的分发函数')

        return super(Btn, self).mousePressEvent(e)

app = App()

window = qtw.QWidget()

btn = Btn(window)
btn.setText('点我')
btn.move(100, 100)

btn.pressed.connect(pressed_slot)

window.show()

sys.exit(app.exec_())


文章由安静原创,发表于www.ajnote.com。转载请注明出处

发表 2020年8月25日 自 anjing 类别 "Pyside2学习笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注