前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt 区分多个信号函数绑定一个槽函数

Qt 区分多个信号函数绑定一个槽函数

作者头像
我与梦想有个约会
发布2023-10-20 17:52:52
2480
发布2023-10-20 17:52:52
举报
文章被收录于专栏:jiajia_deng

当有多个信号函数(Signal)绑定同一个槽函数(Slot)时,你会有这样的需求,在槽函数中我希望知道到底是哪个信号函数发送出来的信号,这样根据不同的发送者来执行不同的操作。想实现这个功能可以在槽函数中调用 sender() 方法获取发送信号的对象类型。然后进行处理,具体代码如下:

【代码实现】

Notice:代码只贴出了关键部分,只为了演示功能而已。

代码语言:javascript
复制
#include "cwidget.h"

CWidget::CWidget(QWidget *parent) : QWidget(parent)
{
    _button1 = new QPushButton("button1", this);
    _button2 = new QPushButton("button2", this);

    _button1->setFixedSize(100, 30);
    _button2->setFixedSize(100, 30);

    _button2->setGeometry(QRect(105, 0, 100, 30));

    // 两个按钮同时绑定一个槽函数
    connect(_button1, SIGNAL(clicked(bool)), this, SLOT(slotRecv()));
    connect(_button2, SIGNAL(clicked(bool)), this, SLOT(slotRecv()));
}

void CWidget::slotRecv()
{
    // 获取发送信号的对象存放到 QObject 基类对象中
    QObject* obj = sender();
    // 把基类对象强制转换成子类对象
    QPushButton* button = dynamic_cast<QPushButton*>(obj);
    // 获取子类对象文本可以判断出是点了哪个按钮
    qDebug() << button->text();
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【代码实现】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档