您的位置:首页 > 移动开发

QSignalMapper的简单使用

2016-06-20 17:11 483 查看
用于信号管理,适用于在一些控件较多的情况下。比如说一排按钮的情况下进行使用。

接收者由目标槽函数转变为QSignalMapper,然后通过参数(整数或者字符串)来进行区分处理。

<span style="white-space:pre">	</span>QSignalMapper *signalMapper = new QSignalMapper(this);
for (i = 0; i < 10; i++) {
button = new QPushButton(QObject::tr(buttonName));
signalMapper->setMapping(button[i], i);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
}
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(handle(int)));


然后我们的槽可以这样写

void handle(int)
{
swich(int){
....
}
}


如果说控件有名字
可以使用字符串,同时便于理解
signal_mapper->setMapping(page_button, page_button->text());
connect(signal_mapper, SIGNAL(mapped(QString)), this, SLOT(handle(QString)));
//处理:
void SkinWidget::handle(QString current_skin)
{
if(current_skin == "first")
{
//...
}
else if(current_skin == "previous")
{
//...
}
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: