博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【QT开发】信号转发器QSignalMapper的使用
阅读量:4684 次
发布时间:2019-06-09

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

QSignalMapper我们可以将它理解为一个信号翻译器或者说是哥信号转发器。它的主要应用在于可以实现一个函数相应不同按钮的实现功能。比如我们 实现一个计算器的时候,很多不同的按钮都有
着差不多的功能,数字0~9的按钮,功能都是输入数字,只是输入的数值不一样而已,
如果不使用 QSignalMappe
r,我们不得不写10个函数作为各自按钮的响应事件。这里我就通过这个简单的实例讲解下QSignalMapper的用法。

 
 
 
 类内的成员:

 
 
 
 QPushButton *numButt[10];

 
 
 
 QLabel *info;

 
 
 
 QLineEdit *inputEdit;

 
 
 
 QHBoxLayout *hLay;

 
 
 
 QVBoxLayout *vLay;

 
 
 
 QGridLayout *gLay;

 
 
 
 QSignalMapper *sigMap;


myinput::myinput(QWidget *parent) :

 
 
 
 QWidget(parent)

{

 
 
 
 hLay = new QHBoxLayout;

 
 
 
 vLay = new QVBoxLayout;

 
 
 
 gLay = new QGridLayout;

 
 
 
 vLay->addLayout(hLay);

 
 
 
 vLay->addLayout(gLay);

 
 
 
 info = new QLabel(tr("the power: "), this);

 
 
 
 inputEdit = new QLineEdit;

 
 
 

 
 
 
 hLay->addWidget(info);

 
 
 
 hLay->addWidget(inputEdit);


 
 
 

 
 
 
 sigMap = new QSignalMapper(this); //创建QSignalMapper对象

 
 
 
 for (int i = 0; i < 10; ++i) {

 
 
 
 
 
 
 
 numButt[i] = new QPushButton(tr(QString::number(i).toStdString().c_str()), thi
s);

 
 
 
 
 
 
 
 //创建0~9按钮对象,按钮显示的text内容就是数值0~9

 
 
 
 
 
 
 
 gLay->addWidget(numButt[i], i/4,
 i%4); 
 
//加入布局

 
 
 
 
 
 
 
 
connect(numButt[i], SIGNAL(clicked()), sigMap, 
SLOT(map()
)
); 

 
 
 
 
 
 
 
 //将原始信号传递给QSignalMappe
r对象

 
 
 
 
 
 
 
 
sigMap->setMapping(numButt[i
], i);

 
 
 
 
 
 
 
 //设置转发规则,转发为参数为int型的信号,并将i作为实参传

 
 
 
 }


 
 
 
 connect(sigMap, SIGNAL(mapped(int)), this, SLOT(sl_push(int)));
 

 
 
 
 //将转发信号连接到对应的槽函数

 
 
 
 this->setLayout(vLay);

}


参考文献:

 
 
 
 http://www.cuteqt.com/blog/?p=512

转载于:https://www.cnblogs.com/huty/p/8517235.html

你可能感兴趣的文章
UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转...
查看>>
linux 使用NSF 映射远程磁盘目录
查看>>
elasticjob 当当的分布式定时任务管理
查看>>
BZOJ 3438: 小M的作物( 最小割 )
查看>>
js性能优化-事件委托(2)
查看>>
Determine File Output Location
查看>>
51NOD 1068 Bash游戏 V3
查看>>
级联。。。
查看>>
socketserver用法列子
查看>>
网站链接被微信屏蔽拦截了怎么办?VJump帮你解除屏蔽
查看>>
SVG.text基本属性
查看>>
Sublime Text3配置Node.js开发环境
查看>>
在线编辑器的原理简单示例
查看>>
MVC弹出子页面向父页面传值
查看>>
用shell定义和访问数组
查看>>
KNN算法原理以及代码实现
查看>>
解读typescript中 super关键字的用法
查看>>
指定IE7(或其他版本)如何访问?
查看>>
iframe 自动适应页面高度
查看>>
eclipse环境下基于tomcat-7.0.82构建struts2项目
查看>>