例1:

QSignMapper *mapper = new QSignMapper(this)

QPushButton *btn1 = new QPushButton(this);

btn1->setText("btn1");

QPushButton *btn2 = new QPushButton(this);

btn2->setText("btn2");

mapper->setMapping(btn1,btn1->text());

mapper->setMapping(btn2,btn2->text());

connect(btn1,SIGNAL(clicked()),mapper,SLOT(map()));

connect(btn2,SIGNAL(clicked()),mapper,SLOT(map()));

connect(mapper,SIGNAL(map(QString),this,SLOT(disStr(QString)));

整体的作用是通过一个无参的信号转化成有参的信号,然后传给槽函数进行操作

引自:http://blog.csdn.net/hsl17/article/details/6768322

例2:

今天想自己用Qt编一个Ubuntu下简易的计算器,设想每次按下一个数字键或者运算符,输出界面上都会显示各自数字或字符。
当多个signal连接到一个同一个slot,而且slot对每个signal处理不同时,用到QSignalMapper:
The  QSignalMapper   class is provided for situations where many signals are connected to the same slot and the slot needs to handle each signal differently.
代码结构如下:

//声明用于显示所按下数字的lineEdit以及各个按钮
QLineEdit* lineEdit = new QLineEdit("0");
lineEdit->setAlignment(Qt::AlignRight);
QPushButton* pushButton = new QPushButton[20];

pushButton[12].setText("1");
pushButton[13].setText("2");
pushButton[14].setText("3");
pushButton[15].setText("-");
......
QSignalMapper* signalMapper = new QSignalMapper;
......
signalMapper->setMapping(&pushButton[12], QString("1"));
signalMapper->setMapping(&pushButton[13], QString("2"));
signalMapper->setMapping(&pushButton[14], QString("3"));
signalMapper->setMapping(&pushButton[15], QString("-"));
......
connect(&pushButton[12], SIGNAL(clicked()),signalMapper, SLOT (map()));
connect(&pushButton[13], SIGNAL(clicked()),signalMapper, SLOT (map()));
connect(&pushButton[14], SIGNAL(clicked()),signalMapper, SLOT (map()));
connect(&pushButton[15], SIGNAL(clicked()),signalMapper, SLOT (map()));
......
connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(setNum(const QString &)));

引自:http://blog.sina.com.cn/s/blog_5e42f31a0100ykaz.html

转自:http://blog.csdn.net/zzwdkxx/article/details/28440265

QSignalMapper类处理多信号关联同一个槽的方法(2)的更多相关文章

  1. QSignalMapper类处理多信号关联同一个槽的方法(1)

    QSignalMapper这个类并不是个新鲜概念, 早在Qt2里就已经存在, 而且它的功能也是始终如一. 不过由于宣传力度不够(例子里涉及到它的很少)了解这个类人可能还不是很多, 所以特此撰文介绍此类 ...

  2. C++模板类与Qt信号槽混用

    一.正文 目前正在做一个视频处理相关的项目.项目的技术栈是这样的,UI层采用Qt来实现基本的数据展示和交互,底层音视频采用的是一套基于FFmpeg的视频处理框架.这是一套类似Microsoft Med ...

  3. qt信号signal和槽slot机制

    内容: 一.概述 二.信号 三.槽 四.信号与槽的关联 五.元对象工具 六.程序样例 七.应注意的问题 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工 ...

  4. QRadioButton类中Toggled()信号的使用方法

    QRadioButton类中Toggled()信号的使用方法 1.说明 QRadioButton中,Toggled()信号是在Radio Button状态(开.关)切换时发出的,而clicked()信 ...

  5. duilib底层机制剖析:窗口类与窗口句柄的关联

    转载请说明原出处.谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术. 这些技术都是为了解决c++封装的窗口类与窗口句柄的关联问题. 这里是三篇关于thunk技 ...

  6. WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配

    原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的 ...

  7. PyQt信号connect连接槽方法时报:native Qt signal is not callable错误

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在将一个信号连接到槽方法时,程序异常退出,捕获异常 ...

  8. laravel5.1 关联模型保存的方法(使用associate方法)

    模型定义 class User { public function customer() { return $this->hasOne('Customer'); } } class Custom ...

  9. Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

随机推荐

  1. C# ASCII码排序

    将字典变成post参数 public static string GetSignContent(IDictionary<string, string> parameters) { // 第 ...

  2. 不能与abstruct共同修饰方法的关键字

    一 抽象类:动态方法至少有一个是抽象方法. 其中abstruct关键字修饰的方法不能与哪些关键字共同修饰? 1private 因为private修饰的方法在子类中是隐藏的.不可见的.而abstruct ...

  3. linux的fork()函数具体解释 子进程复制父进程什么

    #include<stdio.h>   #include<string.h>   #include<stdlib.h>   #include<unistd.h ...

  4. 【Android】3.6 地图基本控制方法

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 文件名:Demo05MapControl.cs 简介:介绍平移和缩放地图,双指操作地图,监听地图点击 ...

  5. C# 使用Nlog记录日志到数据库

    [摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中.本文为你介绍C# 使用Nlog记录日志到数据库. Nlog是一个很不错的.NET ...

  6. Java项目(5)——单例模式的应用与研究

    单例模式是非常别致的一个模式,非常少有人拿它跟其它模式相比,由于,单例模式非常easy,非常特别,作用就是保证一个类有唯一一个实例,并让一个全局变量使得它能被訪问.而保证这个类仅仅被实例化一次的办法就 ...

  7. maven(2)------maven构建项目

    一  下载maven 官网地址: http://maven.apache.org/download.cgi 如图: 可以下载历史版本. 二 windows下maven配置 1. 解压下载后的包,解压后 ...

  8. 字符设备驱动笔记——poll机制分析(七)

    poll机制分析 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数.比如系统调用open.read.write.poll,与之对应的内核函数为:sys_open. ...

  9. Office 2013 Excel 打开文档很慢很慢的解决方法

    这个问题查了很多案例,试了很多方法,但是只有下面这个方法有用! 这几天打开excel文档很慢很慢,双击之后好久没反应,过会儿它才慢慢冒出来,当时将就了,刚刚休息的时候想着查一下吧,不然很影响工作效率! ...

  10. 解决Xshell中文乱码问题

    文件====>属性==>中断===>编码===>选择utf8编码