0.1 qt的信号槽机制在pyside6中的应用

一、什么是信号/槽

Qt中QObject之间需要进行通信,信号槽就是这种通信机制。简单来说信号槽就像是电视机和遥控器,你按遥控器发出指令,电视机作出相应的反应。
在界面开发中拿按钮来举例,当你点击按钮的时候,“点击”就是这个信号,“槽”则是点击按钮后发生的事情,比如关闭窗口。信号是当对象发生其他对象可能感兴趣的一定程度上状态改变的时候发出的。它不关心谁接收这个信号,这就是真正意义上的信息封装,确保了对象能像软件组件一样被使用。槽是用来接收信号的普通成员函数,就像对象不知道是什么来接收它的信号一样,槽也不知道是否有信号连接上它。你可以连接多个信号到一个槽,一个信号也可以连接到多个槽,还可以把信号直接连接到信号。Qt组件有许多预定义的信号槽,比如按钮点击。
举个例子:

import sys
from PySide6.QtWidgets import QApplication, QPushButton


def my_function():
    print("槽函数被调用了。")

app = QApplication()
button = QPushButton("调用函数。")
# 连接信号和槽
button.clicked.connect(function)
button.show()
sys.exit(app.exec())

二、信号类

一个基于QWidget的按钮发出点击信号就像这样:

from PySide6.QtCore import Qt, Signal
from PySide6.QtWidgets import QWidget

class Btn(QWidget):

    clicked = Signal(Qt.MouseButton)


    def mousePressEvent(self, event):
        self.clicked.emit(event.button())

三、槽类

槽应该用@QtCore.Slot()修饰,否则会增加程序运行时的开销和错误的风险。

@Slot(str)
def slot_func(self, s):
    ...
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值