如何使用QSignalMapper

简介: 如何使用QSignalMapper

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


简单的理解,可以把SignalMapper这个类看成是信号的翻译和转发器, 它可以把一个无参数的信号翻译成带int参数、QString参数、QObject*参数或者QWidget*参数的信号, 并将之转发。 这么一说大家有没有联想到该类的适用范围呢? 呵呵, 是不是一下就想到了如果我有一堆的button, 可以把clicked事件放在一个函数里处理, 只要给button编个号或者给button起个名就行了, 这样就不用给每个button写一个slot了,岂不是很方便?


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(mapped(QString),this,SLOT(myfunc(QString)));


整体的作用是通过一个无参的信号转化成有参的信号,然后传给槽函数进行操作。



相关文章
|
Java Shell 数据安全/隐私保护
|
canal SQL 缓存
初识Canal以及使用Docker安装配置
初识Canal以及使用Docker安装配置
初识Canal以及使用Docker安装配置
|
存储 Web App开发 Go
使用Golang上传文件到MinIO对象存储(一)
前一篇文章介绍了开源存储系统 MinIO 的基本内容,今天我们就来看一下,如何使用 Golang 语言将本地的文件上传到 MinIO 对象存储服务上。
3158 2
|
8月前
|
人工智能 IDE 开发工具
JetBrains PyCharm 2025.1 发布 - 面向专业开发者的 Python IDE
JetBrains PyCharm 2025.1 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE
850 29
JetBrains PyCharm 2025.1 发布 - 面向专业开发者的 Python IDE
|
存储 关系型数据库 PostgreSQL
|
Shell 网络安全 开发工具
Qt实用技巧:QtCreator使用git(gitHub)管理项目代码笔记
Qt实用技巧:QtCreator使用git(gitHub)管理项目代码笔记
Qt实用技巧:QtCreator使用git(gitHub)管理项目代码笔记
QT中的动画类(QPropertyAnimation)
QT中的动画类(QPropertyAnimation)
334 0
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
|
前端开发
React如何导出Word文件
React如何导出Word文件
329 0
|
弹性计算 安全 网络安全
阿里云服务器安全组开放宝塔面板端口教程
阿里云服务器安装宝塔面板后,在云服务器ECS安全组开放宝塔面板8888、888、80、443、20和21端口号
3954 0
阿里云服务器安全组开放宝塔面板端口教程