例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. openssl之EVP系列之9---EVP_Digest系列函数的一个样例

    openssl之EVP系列之9---EVP_Digest系列函数的一个样例     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译     (作者:Drago ...

  2. mysql查询-不存在记录时赋对应的数据

    使用mysql数据库,执行查询的时候,有时候就不存在记录,但是正好在不存在记录的时候又需要给赋予相应的查询结果字段,代码实现如下: select IFNULL(('), '1970-01-01 00: ...

  3. Redis监控技巧总结

    Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Redis 系统的状态报告. redis-cli info 内存使用 如果 Redis 使 ...

  4. 依据经纬度返回地址的url -- GoogleMap

    latlng=34,112">https://maps.googleapis.com/maps/api/geocode/xml? latlng=34,112

  5. 如何用adb抓取log?

    在Androidclient的測试过程中,有时候我们会遇到闪退等异常情况. 这时我们能够通过adb抓取log.从而给开发提供很多其它信息. 一.下载ADB.exe     在网上搜索"adb ...

  6. 通达OA 在工作流中直接查询表单内容的开发尝试(图文)

    一个朋友提出要在工作里直接查询表单内容的需求,原来他们把工作流当做业务系统来用.也算把工作流用到极致了.为了实现像软件里直接的查询功能,他想在办理工作流的时候直接能查询到表单里面的内容. 通过研究通达 ...

  7. 苹果开发小记(一):NSString 的比较用法

    转自:http://blog.sina.com.cn/s/blog_897dd7be0100teh6.html 做了几个月的苹果,很多的思想方法都可以遵循一定规律来做的.NSString 比较字符串, ...

  8. 在 Linux 上使用 Nginx 和 Gunicorn 托管 Django 应用

    介绍 托管 Django Web 应用程序相当简单,虽然它比标准的 PHP 应用程序更复杂一些. 让 Web 服务器对接 Django 的方法有很多. Gunicorn 就是其中最简单的一个. Gun ...

  9. Django---ORM操作大全

    前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MyS ...

  10. Spark的性能调优

    下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的. Data Serialization,默认使用的是Java Serialization,这个程序员 ...