博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QSignalMapper类的使用
阅读量:6815 次
发布时间:2019-06-26

本文共 1005 字,大约阅读时间需要 3 分钟。

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

转载地址:http://ezqwl.baihongyu.com/

你可能感兴趣的文章
word 公式下沉解决
查看>>
大众点评运维架构详大揭秘!
查看>>
mysql的密码重置
查看>>
我的友情链接
查看>>
CentOS6.x安装zabbix
查看>>
我的友情链接
查看>>
数据库IO性能知识整理
查看>>
2016 1月1日-1月1日python 学习总结
查看>>
Java操作MongoDB
查看>>
利用iptables实现SNAT及DNAT
查看>>
安卓中如何修改创建的模拟器的存储位置
查看>>
P2P共享经济都可接受 O2O×××有何不可?
查看>>
网易考拉向欧洲市场投入220亿,能掀起多大波澜?
查看>>
Java1.8新特性学习笔记
查看>>
键盘&视频&鼠标(KVM)切换器基础知识
查看>>
DB2 数据库知识
查看>>
宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
查看>>
我的友情链接
查看>>
Android Studio创建侧滑菜单使用心得
查看>>
MySQL事务隔离级别详解
查看>>