QT 信号和槽 多对一关联示例,多个信号,一个槽函数响应,多个信号源如何绑定一个槽函数

三个顾客 Anderson、Bruce、Castiel 都要订饭,分别对应三个按钮,点击一个按钮,就会弹出给该顾客送饭的消息。注意这个例子只使用一个槽函数,而三个顾客名称是不一样的,弹窗时显示的消息不一样,这需要一些 技巧,下面我们开始这个示例的学习。

编辑好界面之后保存。这样三个信号的源头就设置好了,下面需要编写接收它们信号的槽函数。我们回到 QtCreator 的代码编辑模式,打开头文件 widget.h,向类里添加槽函数声明:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:   //添加槽函数进行弹窗void FoodIsComing();private:Ui::Widget *ui;
};#endif // WIDGET_H

 FoodIsComing 就是我们需要添加的槽函数,添加好声明之后,下面再向 widget.cpp 添加代码:

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//三个按钮的信号都关联到 FoodIsComing 槽函数connect(ui->pushButtonAnderson, SIGNAL(clicked()), this, SLOT(FoodIsComing()));connect(ui->pushButtonBruce, SIGNAL(clicked()), this, SLOT(FoodIsComing()));connect(ui->pushButtonCastiel, SIGNAL(clicked()), this, SLOT(FoodIsComing()));
}Widget::~Widget()
{delete ui;
}void Widget::FoodIsComing()
{//获取信号源头对象的名称QString strObjectSrc = this->sender()->objectName();qDebug()<<strObjectSrc; //打印源头对象名称//将要显示的消息QString strMsg;//判断是哪个按钮发的信号if( "pushButtonAnderson" == strObjectSrc ){strMsg = tr("Hello Anderson! Your food is coming!");}else if( "pushButtonBruce" == strObjectSrc ){strMsg = tr("Hello Bruce! Your food is coming!");}else if( "pushButtonCastiel" == strObjectSrc ){strMsg = tr("Hello Castiel! Your food is coming!");}else{//do nothingreturn;}//显示送餐消息QMessageBox::information(this, tr("Food"), strMsg);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用linux 1分钟部署一台文件上传/下载的http/https服务器

安装包官网&#xff1a;GitHub - codeskyblue/gohttpserver: The best HTTP Static File Server, write with golangvue 1、官网下载或本文章的资源链接下载gohttpserver&#xff1b; 2、将gohttpserver、cacert.pem、cakey.pem三个文件放在linux一个目录下 启动gohttpserver服…

有哪些针对平台端口的常见攻击手段

针对平台端口的攻击可以通过多种手段进行&#xff0c;这些手段涵盖了从扫描探测到利用漏洞入侵的整个过程。以下是一些常见的攻击手段及其简要描述&#xff1a; 端口扫描攻击&#xff1a; 攻击者使用端口扫描工具&#xff08;如Nmap&#xff09;探测目标系统开放的端口。通过分…

navi_cat查看数据库的连接密码

Navi_Cat 建立连接&#xff0c;来访问数据库。可惜&#xff0c;忘记了数据库密码&#xff0c;没事&#xff0c;这么搞。 首先先导出链接&#xff0c;再从链接里取出被加密的密码&#xff0c;然后找个可在线运行PHP的网站&#xff08;代码在线运行 - 在线工具&#xff09;&…

go语言内置预编译 //go:embed xxx 使用详解

在go语言里面&#xff0c;我们可以使用一个“类注释”的语法来来让编译器帮助我们在编译的时候将一些文件或者目录读取到指定的变量中来供我们使用。 go:embed语法&#xff1a; //go:embed 文件或者目录路径 var 变量名 变量类型 说明&#xff1a; 文件或者目录路径 可以…

网络简史-基于图论的网络

先看一幅图&#xff1a; 如图&#xff0c;我们对类似 crossbar&#xff0c;banyan tree&#xff0c;b-tree&#xff0c;10-tree&#xff0c;256-tree&#xff0c;甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中&#xff0c;地址信息被编码到拓扑本身&#…

动态SLAM:ORB-SLAM2+YOLOv8

动态SLAM:基于ORB-SLAM2与YOLOv8剔除动态特征点(三种方法)_orbslamyolo-CSDN博客 动态SLAM&#xff1a;ORB-SLAM2YOLOv8-seg

pyqt5 tablewidget实现excel拖曳填充

代码主要涉及鼠标事件和绘图&#xff0c;selectionModel&#xff0c;selectedIndexes。 import sys from PyQt5.QtCore import QPoint, Qt, QCoreApplication, pyqtSlot from PyQt5.QtGui import QBrush, QPixmap, QColor, QPainter,QIcon,QPolygon from PyQt5.QtWidgets imp…

煮粽子(zongzi)

煮粽子 题目描述 端午节快到了&#xff0c;小红作为一名吃货&#xff0c;非常喜欢吃粽子&#xff0c;因此对端午节也是很期待的。 小红前往超市买了 n n n袋粽子&#xff0c;每袋粽子有 x x x颗。小红每次煮 k k k颗粽子&#xff0c;请你计算小红一共可以煮多少次&#xff0…

MicroPython教程:ESP8266 快速参考

ESP8266 快速参考 Adafruit Feather HUZZAH 板&#xff08;图片来源&#xff1a;Adafruit&#xff09;。 以下是基于 ESP8266 的开发板的快速参考。如果这是您第一次使用该板&#xff0c;请考虑先阅读以下部分&#xff1a; 关于 ESP8266 端口的一般信息ESP8266 的 MicroPytho…

持续总结中!2024年面试必问 20 道分布式、微服务面试题(一)

一、什么是分布式系统&#xff1f; 分布式系统是由多个计算机组成的系统&#xff0c;这些计算机通过网络连接在一起&#xff0c;协同工作以完成一个共同的目标或任务。以下是分布式系统的一些关键特点和概念&#xff1a; 网络连接&#xff1a;分布式系统中的计算机通常分布在不…

洛谷 P1253 扶苏的问题 题解 线段树

扶苏的问题 题目描述 给定一个长度为 n n n 的序列 a a a&#xff0c;要求支持如下三个操作&#xff1a; 给定区间 [ l , r ] [l, r] [l,r]&#xff0c;将区间内每个数都修改为 x x x。给定区间 [ l , r ] [l, r] [l,r]&#xff0c;将区间内每个数都加上 x x x。给定区…

每日一题:聊聊 Redis 过期键的删除策略

聊聊 Redis 过期键的删除策略 答案 惰性删除 &#xff1a;只会在取出 key 的时候才对数据进行过期检查&#xff1b;这样对 CPU 最友好&#xff0c;但是可能会造成太多过期 key 没有被删除&#xff08;占用内存&#xff09;。 通过定时器实现&#xff08;时间事件&#xff09;&…

No module named _sqlite3解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【经典案例】使用HAL库配置STM32F407的SPI外设

使用HAL库配置STM32F407的SPI外设 在嵌入式系统开发中&#xff0c;STM32F407是一款广泛应用的微控制器&#xff0c;而SPI&#xff08;Serial Peripheral Interface&#xff09;是一种常用的通信接口。本文将详细介绍如何使用STM32的硬件抽象层&#xff08;HAL&#xff09;库配…

Web前端三大主流框架:React、Angular和Vue的比较与选择

Web前端三大主流框架&#xff1a;React、Angular和Vue的比较与选择 Web前端技术的快速发展为开发者提供了丰富的工具和框架&#xff0c;其中React、Angular和Vue是当前最受欢迎的三大框架。这三个框架各有特点&#xff0c;适用于不同的项目需求和开发团队。本文将对React、Ang…

【红黑树变色+旋转】

文章目录 一. 红黑树规则二. 情况一叔叔存在且为红情况二.变色旋旋 一. 红黑树规则 对于红黑树&#xff0c;进行变色旋转处理&#xff0c;终究都是为了维持颜色以下几条规则&#xff0c;只有颜色和规则维持住了&#xff0c;红黑树就维持住了最长路径的长度不超过最短路径的两倍…

环 境 变 量

如果希望某一个文件在 CMD 窗口的任意路径下都可以打开&#xff0c;则需要将该文件的路径存放在环境变量中。 在 CMD 中运行该文件时&#xff0c;优先查看当前路径下的文件&#xff0c;如果没有找到&#xff0c;则进入环境变量中记录的路径下寻找该文件&#xff0c;如果能找到…

【微信小程序】处理蓝牙数据相关函数

1、将十六进制数组转换为 ArrayBuffer function getBuffer(hexArr) {let buffer new ArrayBuffer(hexArr.length)let dataView new DataView(buffer);hexArr.forEach((item, index) > {dataView.setUint8(index, item);})return buffer }创建了一个与输入数组长度相同的新…

人工智能安全风险分析及应对策略

文│中国移动通信集团有限公司信息安全管理与运行中心 张峰 江为强 邱勤 郭中元 王光涛 人工智能&#xff08;AI&#xff09;是引领新一轮科技革命和产业变革的关键技术。人工智能赋能网络安全的同时&#xff0c;也会带来前所未有的安全风险。本文在介绍人工智能技术赋能网络安…

Docker高级篇之Docker搭建mysql主从复制架构

文章目录 1. 安装mysql主从复制2. 主从复制测试 1. 安装mysql主从复制 首先创建主节点 docker run -d -p 3308:3306 \ --privilegedtrue \ -v /Users/jackchai/Desktop/lottory_docker/learndocker/mymysql/master/log:/var/log/mysql \ -v /Users/jackchai/Desktop/lottory_…