QSignalMapper 类用来接受多个信号,将信号汇总后再发射一个新信号。
用处主要是使多个执行类似功能的槽函数化简为一个。
比如说,界面上有十个按钮,按期中一个就输出按钮的名称。每个按钮的该槽函数执行功能基本相同,只是传递信息不同。
QSignalMapper *signalMapper = new QSignalMapper(this); //先创建一个信号发射器
for(多个对象)
{
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map())); //将按钮信号与信号发射器的槽连接
signalMapper->setMapping(button, texts[i]); //设定信号转发规则
//signalMapper->setMapping( 对象,转发信号信息) 不同信息通过转发信息传递
}
connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(doClicked(const QString &)));//与最终的槽函数连接
//mapped()重载了多种形式参数,具体可以看文档