当前位置: 首页 > news >正文

Pyside6 + QML - 信号与槽07 - 一个函数被多个信号触发

导言


在前面的例子里,我们学习了“一个信号连接多个槽”,实现了一个事件驱动多段逻辑。
本篇介绍反过来的用法:一个函数可以同时响应多个信号。

这种模式适用于以下场景:

  • 界面上有多个按钮,但它们最终都需要调用同一段处理逻辑(例如日志、统一的控制命令)。
  • 不同事件类型,可以通过参数区分,由同一个函数来集中处理。
    在这里插入图片描述
    效果如下所示:
    在这里插入图片描述
    工程代码:
  • github: https://github.com/q164129345/myPyside6_QML/tree/main/basic08_one_fun_multi_signal
  • gitee: https://gitee.com/wallace89/myPyside6_QML/tree/main/basic08_one_fun_multi_signal

一、main.py


# python3.10.11 - PySide6==6.9
import sys
from PySide6.QtCore import QObject, Signal, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngineclass Backend(QObject):# 定义两个信号signalA = Signal()signalB = Signal()def __init__(self):super().__init__()# 两个信号都连接到同一个槽函数self.signalA.connect(self.slot_handle_event)self.signalB.connect(self.slot_handle_event)# 统一的槽函数def slot_handle_event(self):print("[Python] 槽函数:收到一个信号事件")if __name__ == "__main__":# 创建应用程序和引擎app = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()# qml与python交互backend = Backend() # 实例化python后端对象engine.rootContext().setContextProperty("backend", backend) # 注册到QML环境(名叫 “backend”)# 加载QML文件engine.addImportPath(sys.path[0])  # 当前项目路径engine.loadFromModule("Example", "Main")  # 模块(Example) + QML文件名(Main.qml)if not engine.rootObjects():sys.exit(-1)sys.exit(app.exec())

关键点说明

# 两个信号都连接到同一个槽函数
self.signalA.connect(self.slot_handle_event)
self.signalB.connect(self.slot_handle_event)
  • 信号A与信号B都连接到同一个函数slot_handle_event();

二、Main.qml


import QtQuick
import QtQuick.ControlsWindow {width: 320height: 240visible: truetitle: "信号与槽 06 - 一个槽响应多个信号"Column {anchors.centerIn: parentspacing: 10Button {text: "触发信号A"onClicked: backend.signalA()}Button {text: "触发信号B"onClicked: backend.signalB()}}
}

关键点说明

Button {text: "触发信号A"onClicked: backend.signalA()
}Button {text: "触发信号B"onClicked: backend.signalB()
}
  • 跟上一章节一样。QML可以很方便地调用信号函数。
    • ButtonA通过点击按钮的回调直接调用信号函数signalA()。
    • ButtonB一样。
http://www.dtcms.com/a/396356.html

相关文章:

  • 网站建设经费的请示中国建设门户网登录入口
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(35):文法運用10课2+文法と使いえ方3)
  • 通过新闻学习日语,标题《ビール各社 厳しい暑さでも育つホップの栽培技術開発など進む》
  • 中国建设银行章丘支行网站做网站排名有用吗
  • 《模拟电子技术》之结型场效应管
  • 【Jenkins】配置到实战教程
  • 国之珍微站个人网站wordpress渗透
  • 有那些网站可以做推广企业网站建设 厦门
  • 站群系统源码微信外卖小程序加盟
  • 重庆直播网站平台建设小程序制作样式
  • 免费注册域名FreeDomain
  • Linux C语言基于FP寄存器进行栈回溯
  • 网站项目团队介绍怎么写网站建设需要哪些的ps
  • 网站做好了怎么办用rp怎么做网站功能按钮
  • 水果购物网站|基于java+vue的水果购物网站系统(源码+数据库+文档)
  • 巩义移动网站建设如何制作个人网页缴费
  • 深圳做企业网站1个亿用户的服务器多少钱
  • 电子商务有限公司网站济宁鱼台网站建设
  • 从“万能 ES”到专业 ClickHouse:一次埋点数据存储的选择
  • ICCV-2025 | 斯坦福人形机器人自主导航!LookOut:真实环境人形机器人第一人称视角导航
  • 网络销售网站数据库设计工具
  • stm32定时器:什么是 Timer Trigger Output Event
  • 网站推广有哪些方式如何用群晖做自己的网站
  • 网站后台管理员职责页游做的好的是哪个网站
  • 汕头网站设计浩森宇特自己做游戏app的网站
  • 做火锅加盟哪个网站好域名网安备案
  • seo网站推广与优化方案成交功能网站
  • 动漫网站模板建网站 温州
  • 北京网站建设 seo公司哪家好营口东站营销网站建设
  • 有自己域名如何做网站qq登录网页版登录入口