QSignalMapper的简单使用
2016-06-20 17:11
483 查看
用于信号管理,适用于在一些控件较多的情况下。比如说一排按钮的情况下进行使用。
接收者由目标槽函数转变为QSignalMapper,然后通过参数(整数或者字符串)来进行区分处理。
然后我们的槽可以这样写
如果说控件有名字
可以使用字符串,同时便于理解
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")
{
//...
}
}
接收者由目标槽函数转变为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")
{
//...
}
}
相关文章推荐
- Android蓝牙低功耗开发
- android Menu详解
- 一个彩票的框架demo
- Android studio导入9图报错
- android-R.anim
- 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置
- Android学习项目之简易版微信为例(二)
- android中的通信机制总结
- art 是怎么把 dalvik 指令编译成 native code 第二篇(走马观花)
- Bilibili/DanmakuFlameMaster: Android开源弹幕引擎·烈焰弹幕使 ~ JNI source:Bilibili/NativeBitmapFactory
- android-R.animator
- 【风马一族_Android】多选按钮的监控事件
- KING_Unity学习之UGUI_Canvas渲染顺序以及层次关系总结
- ios开发——AirPlay的琢磨经历
- android handler 调用原理
- Android学习项目之简易版微信为例(一)
- android图形系统详解六:View layer
- ios 学习之 NSPredicate 模糊、精确、查询
- Android SnackBar学习
- 移动端前端框架UI库