博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QSignalMapper类处理多信号关联同一个槽的方法(2)
阅读量:6856 次
发布时间:2019-06-26

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

例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

转自:http://blog.csdn.net/zzwdkxx/article/details/28440265
你可能感兴趣的文章
Linux shell 之 提取文件名和目录名的一些方法
查看>>
test.
查看>>
树莓派3B连接WIFI
查看>>
springMVC启动过程源码解析(一)
查看>>
linux中生成考核用的FAT32文件系统结构样例(一)
查看>>
Docker 常用命令
查看>>
eclipse快捷键
查看>>
纯虚函数和虚函数的区别
查看>>
配置adb环境变量
查看>>
Jenkins安装
查看>>
命名空间 (一)
查看>>
Django报错
查看>>
性能测试培训:分析内训泄露的案例
查看>>
javax.persistence.TransactionRequiredException: Executing an update/delete query异常
查看>>
分享33个不容错过的免费社交图标集
查看>>
如果是你你会如何重新设计和定义维基百科(wikipedia)?
查看>>
ppp pap和chap 认证
查看>>
交换机的基本配置
查看>>
PHP结合Python的WEB开发技术
查看>>
华为:缺省路由:默认路由 default route
查看>>