• QSignalMapper类的使用


        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*參数的信号,在详细的项目中我们能够依据须要进行对应的转换。


  • 相关阅读:
    js组件常用封装方法。。。。。【组件封装】 ★★★★★★ 1月会员日 集人气【弹窗】
    以后开公司用的资源瞎记录
    SpringSecurityFilter 链
    分布式系统数据一致性的6种方案(转)
    统一日志监控系统 springboot websocket 作品
    MyBatis generator 使用方式 小结
    swagger and restful api 参考
    kafka linux 启动脚本 sample
    转 CAS实现SSO单点登录原理
    江南白衣 Java性能优化PPT
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6730520.html
Copyright © 2020-2023  润新知