【Qt】槽函数中获取发出信号的对象
2016-10-14 16:01
751 查看
核心:QObject::sender()
对于信号与槽的连接
connect( obj1 , SIGNAL(sigFun()) , obj2 , SLOT(slotFun()) )
或者
connect( obj1 , &Object1::sigFun , obj2 , &Object2::slotFun )
可以通过信号与槽函数的参数来传递数据
但是存在一些情况,我们希望能在slotFun()里去获得obj1对象指针
实际上可以通过Qt基类QObject::sender(),在槽函数里获得绑定的信号的来源对象,解决一些动态绑定信号与槽的情况下,非常有用
例子:
菜单栏中的最近打开文件列表
最近打开文件地址列表
QList<QString> FileList;
生成对应的QAction
for(int i=0;i<FileList.size();i++)
{
QAction *act=new QAction(FileList[i]);
act->setData(FileList[i]);
connect(act, SIGNAL( triggled() ), this , SLOT( slotFun() ));
}
我们在QAction里动态setData了一些数据
正常情况,只能知道触发了菜单QAction,由于是动态创建的QAction,所以没办法在槽函数slotFun里确定是哪个QAction触发了这个槽,所以也就没办法获取act->Data()里的数据
那么在槽函数里使用QObject::sender(),我们就能获得触发该槽函数的信号的对象
slotFun()
{
QAction *act=qobject_cast<QAction*>(sender());//使用Qt的类型转换,将指针恢复为QAction类型
qDebug()<<act->Data();
}
对于信号与槽的连接
connect( obj1 , SIGNAL(sigFun()) , obj2 , SLOT(slotFun()) )
或者
connect( obj1 , &Object1::sigFun , obj2 , &Object2::slotFun )
可以通过信号与槽函数的参数来传递数据
但是存在一些情况,我们希望能在slotFun()里去获得obj1对象指针
实际上可以通过Qt基类QObject::sender(),在槽函数里获得绑定的信号的来源对象,解决一些动态绑定信号与槽的情况下,非常有用
例子:
菜单栏中的最近打开文件列表
最近打开文件地址列表
QList<QString> FileList;
生成对应的QAction
for(int i=0;i<FileList.size();i++)
{
QAction *act=new QAction(FileList[i]);
act->setData(FileList[i]);
connect(act, SIGNAL( triggled() ), this , SLOT( slotFun() ));
}
我们在QAction里动态setData了一些数据
正常情况,只能知道触发了菜单QAction,由于是动态创建的QAction,所以没办法在槽函数slotFun里确定是哪个QAction触发了这个槽,所以也就没办法获取act->Data()里的数据
那么在槽函数里使用QObject::sender(),我们就能获得触发该槽函数的信号的对象
slotFun()
{
QAction *act=qobject_cast<QAction*>(sender());//使用Qt的类型转换,将指针恢复为QAction类型
qDebug()<<act->Data();
}
相关文章推荐
- 【Qt】槽函数中获取发出信号的对象
- 槽函数获取发出信号的对象
- qt 获取发送信号的对象
- Qt连接信号到子类槽函数提示父类无相应槽函数
- 关于类的入门例子(9): 获取对象的 RTTI 属性与事件的函数
- javascript获取函数名称、函数参数、对象属性名称的代码实例
- QT信号与槽之槽函数
- Qt学习笔记-启动一个额外的应用程序-获取输入的回车信号
- Python帮助函数调试函数 用于获取对象的属性及属性值
- Qt中SQL QSqlQuery 对象中prepare()函数的用法
- QT中鼠标位置获取问题之event->globalPos()与pos()函数
- Js 获取当前函数参数对象的实现代码
- Qt中SQL QSqlQuery 对象中prepare()函数的用法
- Qt信号与槽补充 - 在基类函数中发射的信号
- Ⅰ.2.2 如何调用Qt对象的函数
- jquery获取对象,ajax写法,jquery ready方法,常用函数
- Qt信号槽中槽函数为虚函数的一些感想
- js获取指定节点对象的样式属性的值的封装函数(兼容ie、Opera和符合w3c标准浏览器)
- QT中信号函数的理解