主要步骤如下:
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个按钮被按下";
break;
case 1:
qDebug()<<"第2个按钮被按下";
break;
default:
break;
}
}
QSignalMapper 它可以把一个无参数的信号翻译成带int参数、QString参数、QObject*参数或者QWidget*参数的信号,在具体的项目中我们可以根据需要进行相应的转换。
原文:http://blog.csdn.net/u013704336/article/details/44242065