QSignalMapper我们可以将它理解为一个信号翻译器或者说是哥信号转发器。它的主要应用在于可以实现一个函数相应不同按钮的实现功能。比如我们 实现一个计算器的时候,很多不同的按钮都有着差不多的功能,数字0~9的按钮,功能都是输入数字,只是输入的数值不一样而已,如果不使用
QSignalMapper,我们不得不写10个函数作为各自按钮的响应事件。这里我就通过这个简单的实例讲解下QSignalMapper的用法。
    类内的成员:
    QPushButton
*numButt[10];
    QLabel
*info;
    QLineEdit
*inputEdit;
    QHBoxLayout
*hLay;
    QVBoxLayout
*vLay;
    QGridLayout
*gLay;
    QSignalMapper
*sigMap;

myinput::myinput(QWidget *parent) :
    QWidget(parent)
{
    hLay
= new QHBoxLayout;
    vLay
= new QVBoxLayout;
    gLay
= new QGridLayout;
    vLay->addLayout(hLay);
    vLay->addLayout(gLay);
    info
= new QLabel(tr("the power: "), this);
    inputEdit
= new QLineEdit;
   
    hLay->addWidget(info);
    hLay->addWidget(inputEdit);

   
    sigMap
= new QSignalMapper(this); //创建QSignalMapper对象
    for
(int i = 0; i < 10; ++i) {
        numButt[i]
= new QPushButton(tr(QString::number(i).toStdString().c_str()), this);
        //创建0~9按钮对象,按钮显示的text内容就是数值0~9
        gLay->addWidget(numButt[i],
i/4, i%4);  //加入布局
        connect(numButt[i],
SIGNAL(clicked()), sigMap, SLOT(map())); 
        //将原始信号传递给QSignalMapper对象
        sigMap->setMapping(numButt[i],
i);
        //设置转发规则,转发为参数为int型的信号,并将i作为实参传递
    }

    connect(sigMap,
SIGNAL(mapped(int)), this, SLOT(sl_push(int))); 
    //将转发信号连接到对应的槽函数
    this->setLayout(vLay);
}

参考文献:
    http://www.cuteqt.com/blog/?p=512

【QT开发】信号转发器QSignalMapper的使用的更多相关文章

  1. Qt开发之信号槽机制

    一.信号槽机制原理 1.如何声明信号槽 Qt头文件中一段的简化版: class Example: public QObject { Q_OBJECT signals: void customSigna ...

  2. QT 的信号与槽

    转载: QT 的信号与槽机制介绍 QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 ...

  3. QT的信号与槽机制介绍

      信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗 ...

  4. Qt 的信号与槽机制介绍(10个要注意的问题)

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  5. Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)

    一 闲谈: 熟悉Window下编程的小伙伴们,对其消息机制并不陌生, 话说:一切皆消息.它可以很方便实现不同窗体之间的通信,然而MFC库将很多底层的消息都屏蔽了,尽管使用户更加方便.简易地处理消息,但 ...

  6. 【qt】QT 的信号与槽机制

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  7. 【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集

    简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍在Qt开发环境下基于RS485实现4-20mA电流采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成 ...

  8. 【Qt开发】QThread 实用技巧、误区----但文档中没有提到

    本文主要内容: 在任务一中,用 四 种方式实现:点击界面按钮,开线程运行一段程序,结果显示在一个Label上.1. 用不正确的方式得到看似正确的结果2. 用Qt Manual 和 例子中使用的方法3. ...

  9. QT的信号和槽机制简介

    信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部 ...

随机推荐

  1. [matlab工具箱] 曲线拟合Curve Fitting

    ——转载网络 我的matlab版本是 2016a 首先,工具箱如何打开呢? 在 apps 这个菜单项中,可以找到很多很多的应用,点击就可以打开具体的工具窗口 本文介绍的工具有以下这些: curve F ...

  2. 洛谷 P2010 回文日期 题解

    P2010 回文日期 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日 ...

  3. flutter 省市区选择器 city_pickers 的简单实用

    Github地址:https://github.com/hanxu317317/city_pickers packages地址: https://pub.flutter-io.cn/packages/ ...

  4. Kafka 深入核心参数配置

    Kafka 真是一个异常稳定的组件,服务器上我们部署了 kafka_2.11-1.0.1 版本的 kafka 除了几次计算时间太长触发了 rebalance 以外,基本没有处理过什么奇怪的问题. 但是 ...

  5. 数据结构实验之查找七:线性之哈希表 (SDUT 3379)

    #include <stdio.h> #include <string.h> #include <stdlib.h> int a[3500]; int Hash[3 ...

  6. [luogu 4719][模板]动态dp

    传送门 Solution \(f_{i,0}\) 表示以i节点为根的子树内,不选i号节点的最大独立集 \(f_{i,1}\)表示以i节点为根的子树内,选i号节点的最大独立集 \(g_{i,0}\) 表 ...

  7. Docker配置文件详解

    先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...

  8. NAT+PAT+OSPF+设备互连地址详解

  9. Spring|@Autowired与new的区别

    前两天写代码的时候遇到一个问题,通过new出来的对象,自动注入的属性总是报空指针的错误.到网上查了资料,才发现问题所在,同时也加深了自己对于容器IOC的理解.现在把这个问题记录一下,仅供大家参考. [ ...

  10. apache不能解析php之解决办法

    记录一下Ubuntu16.04下的apache服务器不能解析php的问题,如图所示: 对于这个Ubuntu16.04最直接最快速的解决办法就是执行如下命令: sudo apt-get install ...