2 pingshanjushi PingShanJuShi 于 2015.06.15 16:59 提问

qt中用信号和槽导致程序挂掉

工具是qt creator,qt库版本为5.4,环境是windows 7,在我的程序中有一个信号的参数是(QSring,double,double,double,double),然后和在同一个类中的私有成员类的信号connect,最后这个私有成员类将此信号和这个私有成员类的私有成员类的槽函数connect,结果运行起来会让程序无缘无故挂掉。调试也发现不了原因,我在猜想是不是因为QString的原因,求有经验的大神赐教

5个回答

lx624909677
lx624909677   Ds   Rxr 2015.06.15 17:06

给程序的每一步都加个log看看是哪儿的问题,信号和槽只是一种绑定的关系,不会因此造成程序崩溃的,造成程序崩溃可能是槽函数里的某行代码处了问题

lx624909677
lx624909677 回复PingShanJuShi: ....
大约 3 年之前 回复
PingShanJuShi
PingShanJuShi 哈,我已经解决了,我把信号和槽的参数换成了模板并typedef注册后使用就没问题了。不过谢谢你的热心
大约 3 年之前 回复
lx624909677
lx624909677 回复PingShanJuShi: 有时候会输出是说该输出的时候,但有时候会不输出吗?那就说明你的代码设计有问题啊
大约 3 年之前 回复
PingShanJuShi
PingShanJuShi 我在每个槽函数开始都加了debug输出语句,有时候会输出,但是基本大部分时候是不会输出的,而且槽函数还没加处理函数
大约 3 年之前 回复
PingShanJuShi
PingShanJuShi   2015.06.15 17:12

我在每个槽函数开始都加了debug输出语句,有时候会输出,但是基本大部分时候是不会输出的,而且槽函数还没加处理函数

PingShanJuShi
PingShanJuShi   2015.06.15 17:24

还有很重要的一点,最初的信号是在线程中发送的,connect的信号是主线程里的

zhangjiedebianhua
zhangjiedebianhua   2015.06.15 20:25

qq123456789

gamefinity
gamefinity   Rxr 2015.06.15 21:11

把代码贴出来看。你这样说,怎么诊断问题呢?QT中信号和槽本身肯定是不会有问题的,多数是使用上的问题

PingShanJuShi
PingShanJuShi 确实是,下次一定上代码,不过问题已经解决了,谢谢
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
QT学习——Qt信号与槽实现原理
本文使用 ISO C++ 一步一步实现了一个极度简化的信号与槽的系统 (整个程序4个文件共121行代码) 。希望能有助于刚进入Qt世界的C++用户理解Qt最核心的信号槽与元对象系统是如何工作的。 另:你可能会对 从 C++ 到 Qt   一文感兴趣 dbzhang800 2011.04.30 注:Qt5 staging仓库已经引入一种全新的信号与槽的语法:信号可以和普通的函数、类
Qt学习心得——信号与槽的认识1
Qt学习心得——信号与槽的认识1       信号与槽的主要实现的功能是对界面中按钮进行定义,比如主界面中有个按钮pushbutton,并设置其显现名称为“计算”,那需要定义一个当这个按钮被点击时的功能,这个功能称之为槽,全称是槽函数,可见槽就是一种函数;点击的操作称之为信号。信号与槽可理解为,当信号为触发时,将自动执行与该信号相关联的槽函数。
QT 信号与槽不在同一个线程 connect
主线程中发出一个信号,另一个线程槽函数没有响应,这个问题搞了好几个小时,才发现原来是connect时候的第5个参数写错了,在这里做下备注吧。 connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。 Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发
Qt的信号和槽是如何工作的
用Qt做过开发的朋友,不知道是否曾为下面这些问题疑惑过: 我们知道Qt是基于C++的,Qt写的代码最终还是要由C++编译器来编译,但是我们的Qt代码中有很多C++里没有的关键字,比如slots\signals\Q_OBJECT等,为什么C++编译器会放过他们呢? Qt的槽函数跟普通的成员函数有何区别?一个信号发出后,与之关联的槽函数是什么时候由谁来调用的? Qt的信号
QT跨线程连接信号和槽
信号与槽的使用、参数传递等问题。
QT自定义信号和槽
QT QT自定义信号和槽 QT自定义 信号和槽 QT信号。讲解怎么在 QT中自己定义消息和槽,QT编程可以看看
qt连接信号与槽的问题报错的原因
有一个A类对象的指针a,A有信号signalA()和槽函数slotA(),连接这对信号与槽一般用如下语句: connect(a,SIGNAL(signalA()),this,SLOT(slotA())); 但是若a指向的对象没有实例化,该语句会报错。因此在连接信号与槽时,应该确保发送者和接收者都已经实例化,以免报错!
Qt信号和槽的两种类型
信号和槽机制 Signal&Slot  信号和槽机制用于两个对象的通信。在GUI编程中,总希望一个部件的变化其他的部件也能够了解到。这就是说,我们希望任何对象都可以和其他的对象进行通信。当一个特殊的事情发生时便可以发射一个信号,比如按钮被单击;而槽就是一个函数,他在信号发射后被用来响应这个信号。一个信号可以关联到多个槽上,多个信号也可以关联到同一个槽上,甚至,一个信号还可以关联到另一个信号上。
QT信号(signal)和槽(slot)应注意的问题
信号与槽机制是比较灵活的,但有些局限性我们必须了解,这样在实际的使用过程中做到有的放矢,避免产生一些错误。下面就介绍一下这方面的情况。 1.信号与槽的效率是非常高的,但是同真正的回调函数比较起来,由于增加了灵活性,因此在速度上还是有所损失。 当然这种损失相对来说是比较小的,通过在一台i586-133的机器上测试是10微秒(运行Linux),可见这种机制所提供的简洁性、灵活性还是值得的。但如
QT信号和槽总结
1.一个信号可以对应多个槽,槽的执行顺序不确定。 2.多个信号可以对应一个槽,任何一个信号都会调用这个槽 3.一个信号可以与另一个信号连接,当第一个信号发射时,第二个信号也会发射 3.链接可以被移除 注意:要把信号成功链接到槽,信号和槽必须有相同的参数类型和顺序,当信号参数比槽多时会被忽略