Qt中当定义了非常多的button,而他们的信号都同样时(比方都是点击信号),没有必要给他们每一个都设置信号和槽的链接。QSignalMapper给我们攻克了这个难题。

今天完毕这个相似的功能时,不知道怎么办,就问了下度娘,结果就实现了。效果简直太完美了,假设不这么做。我还真的不知道该怎么办。

    在完毕的过程中,出现了一个问题,看了半天也没有解决,弄的我是一头雾水。和网上的样例是一模一样的,可就是无法实现装换,最后看了下函数原型。原来和我要船的參数不匹配,我须要的是int型參数。而给传的时候是QString型的,真是郁闷啊!

主要过程例如以下:

1)定义一个QSignalMapper对象

    QSignalMapper *signalmapper = new QSignalMapper(this);

2)建立一个无參数的链接

   connect(tool_button,SIGNAL(clicked()),signalmapper,SLOT(map()));

3)进行转换

  signalmapper->setMapping(tool_button,nIndex);

  注意:在转换的时候要细心了,依据你的须要进行转换,setMapping()函数中的參数可不是任意的,第二个參             数就是你要转换的參数,我须要int型,循环中的nIndex就是整形的,要不然在进行后面信号和槽的链接的时候
          会非常苦逼!

4)最后我们把信号转发到终于的处理函数slot_Turnpage(int)(信号槽)中

    connect(signalmapper,SIGNAL(mapped(int)),this,SLOT(slot_Turnpage(int)));

5)在槽函数中进行对应的操作。(比方)

void ToolBar::slot_Turnpage(int current_page)
{
    switch (current_page) {
    case 0:
        qDebug()<<"第1个button被按下";
        break;
    case 1:
        qDebug()<<"第2个button被按下";
        break;
     default:
        break;
    }
}

QSignalMapper 它能够把一个无參数的信号翻译成带int參数、QString參数、QObject*參数或者QWidget*參数的信号,在详细的项目中我们能够依据须要进行对应的转换。

QSignalMapper类的使用的更多相关文章

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

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

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

    例1: QSignMapper *mapper = new QSignMapper(this) QPushButton *btn1 = new QPushButton(this); btn1-> ...

  3. QSignalMapper Class

    /************************************************************************************** * QT QSignal ...

  4. QT 巧用QSignalMapper分类有序地处理大量信号

    转自--> http://blog.csdn.net/cuteqt/article/details/4306900 QSignalMapper这个类并不是个新鲜概念, 早在Qt2里就已经存在, ...

  5. QSignalMapper的使用和使用场景

    目录 QSignalMapper的使用和使用场景 常见场景 下面是参考.可看可不看 这篇写的不错,搬运为Markdown了 可以看一下 参考 QSignalMapper的使用和使用场景 QSignal ...

  6. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  7. Qt5中的信号槽

    Qt4中的信号槽 Qt4中的信号槽是通过SIGNAL,SLOT两个宏,将参数转换成字符串.Qt编译前,会从源码的头文件中提取由signal和slot声明的信号和槽的函数, 将其组成一张信号和槽对应的字 ...

  8. Qt动画效果展示(文艺IT男)

    该程序使用应用程序单窗口,主窗口继承于QMainWindow:主窗口有5个QToolButton部件(窗口底部的四个以及窗口中央的一个),单击窗口底部的QToolButton部件可以使窗口中央的那个Q ...

  9. 用Qt写软件系列五:一个安全防护软件的制作(2)

    引言 在上一篇中讲述了主窗体的创建和设计.主窗体的无边框效果.阴影效果.拖动事件处理.窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨.这一篇继续讲述工具箱(Tool Button ...

随机推荐

  1. oracle 导入dmp文件

    /*第1步:创建临时表空间  */ create temporary tablespace webdata_temp tempfile 'D:\oracle\product\10.2.0\oradat ...

  2. js实现图片下载

    <img src='src' data-name='自定义名称'><script>//js实现图片下载 function download(){ var name = $('# ...

  3. 1.Spark Streaming另类实验与 Spark Streaming本质解析

    1 Spark源码定制选择从Spark Streaming入手  我们从第一课就选择Spark子框架中的SparkStreaming. 那么,我们为什么要选择从SparkStreaming入手开始我们 ...

  4. android:sharedUserId

    <manifest> syntax: <manifest xmlns:android="http://schemas.android.com/apk/res/android ...

  5. 每日一刷(2018多校水题+2016icpc水题)

    11.9 线段树 http://acm.hdu.edu.cn/showproblem.php?pid=6315 求逆序对个数 http://acm.hdu.edu.cn/showproblem.php ...

  6. Loj#6434「PKUSC2018」主斗地(搜索)

    题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\( ...

  7. 浮生半日:探究Python字节码

    好吧!“人生苦短,请用Python”,作为python爱好者以及安全从业者,而且最近也碰到了一些这方面的问题,懂点python字节码还是很有必要的. Python是一门解释性语言,它的具体工作流程如下 ...

  8. Linux命令之ping

    ping [选项] destination ping命令向网络主机发送ICMP回传请求 详细描述:ping使用ICMP协议强制ECHO_REQUEST(回传请求)数据报从主机或网关获取ICMP协议的E ...

  9. Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛

    相关链接 UEditor:http://ueditor.baidu.com/website/​ 下载地址:http://ueditor.baidu.com/website/download.html# ...

  10. Java-并发入门

    本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ Java中实现多线程的方法 实现Runnable接口 实现Runnable接口里的run()方法 ...