QSignalMapper类处理多信号关联同一个槽的方法(2)
例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
QSignalMapper类处理多信号关联同一个槽的方法(2)的更多相关文章
- QSignalMapper类处理多信号关联同一个槽的方法(1)
QSignalMapper这个类并不是个新鲜概念, 早在Qt2里就已经存在, 而且它的功能也是始终如一. 不过由于宣传力度不够(例子里涉及到它的很少)了解这个类人可能还不是很多, 所以特此撰文介绍此类 ...
- C++模板类与Qt信号槽混用
一.正文 目前正在做一个视频处理相关的项目.项目的技术栈是这样的,UI层采用Qt来实现基本的数据展示和交互,底层音视频采用的是一套基于FFmpeg的视频处理框架.这是一套类似Microsoft Med ...
- qt信号signal和槽slot机制
内容: 一.概述 二.信号 三.槽 四.信号与槽的关联 五.元对象工具 六.程序样例 七.应注意的问题 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工 ...
- QRadioButton类中Toggled()信号的使用方法
QRadioButton类中Toggled()信号的使用方法 1.说明 QRadioButton中,Toggled()信号是在Radio Button状态(开.关)切换时发出的,而clicked()信 ...
- duilib底层机制剖析:窗口类与窗口句柄的关联
转载请说明原出处.谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术. 这些技术都是为了解决c++封装的窗口类与窗口句柄的关联问题. 这里是三篇关于thunk技 ...
- WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配
原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的 ...
- PyQt信号connect连接槽方法时报:native Qt signal is not callable错误
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在将一个信号连接到槽方法时,程序异常退出,捕获异常 ...
- laravel5.1 关联模型保存的方法(使用associate方法)
模型定义 class User { public function customer() { return $this->hasOne('Customer'); } } class Custom ...
- Python面向对象 --- 类的设计和常见的内置方法
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...
随机推荐
- Spark与Pandas中DataFrame对比
Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...
- 使用dockerfile 构建springboot 的docker镜像
1 新建一个 springboot 项目,并将其打包成 jar 文件.生成demo1.jar 文件 请参考 使用springBoot搭建REATFul风格的web demo 2 编写 dockerfi ...
- 使用matlab处理图像的基础知识
MATLAB基本函数一 矩阵运算 1.基本算数运算(加减乘除) + -运算要求矩阵维数相同,例m*n * /运算,例A=B*C,B矩阵是m*n矩阵,B是n*p矩阵,则A是m*p矩阵 A/B相当于A*i ...
- cocos2dx CallFunc注意事项
CCDelayTime*delay=CCDelayTime::create(2); auto act = CallFunc::create([=](){ //func body ... }); ...
- Scala first trial
scala是一种将面向对象和函数式编程相结合的语言,在spark中大显身手,在大数据时代下,不会scala都不敢说自己是搞大数据的.前段时间参加BDTC2014大数据会议时,spark的贡献者,陈超老 ...
- C#用ado.net访问EXCEL的常见问题及解决方法
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...
- js动态创建表格,删除行列的小例子
js动态创建表格,删除行列的实例代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
- Diamond 3.5简易教程(二)------软件的简单使用
二.软件的简单使用 工程建立后我们就可以进行程序的编写添加了. 选择左下角file list 选项卡 这里主要是工程的信息. 在input files 上右键弹出选项addànew file... 在 ...
- Python 2.7.9 Demo - 005.字符串判空
#coding=utf-8 #!/usr/bin/python str1 = None; str2 = ''; str3 = ' '; if str1 == None : print("st ...
- 轮询、长轮询、长连接、websocket
Web端即时通讯技术:即时通讯技术简单的说就是实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的.但是在Web中,由于浏览器的限制,实现即 ...