问题遇到的现象和发生背景
我的程序需要支持不同的设备,所以用了运行多态的方法,3个类都继承一个基类,通过运行时确定运行哪一个类
遇到的现象和发生背景,请写出第一个错误信息
发现主线程发信号触发子线程的槽函数可以执行 , 但是子线程的信号无法触发主线程的槽函数;
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
if (device_name == "PeakCan"){
canRecv = new CPeakCan;
qDebug() << "device is PeakCan";
}
else if (device_name == "ZlgCan"){
canRecv = new CCanFdRecver;
qDebug() << "device is ZlgCan";
}
else if (device_name == "VectorCan"){
canRecv = new VectorCan;
qDebug() << "device is VectorCan";
}
pthread = new QThread(this);
connect(this,&DeviceWidget::start_work,canRecv,&CanBase::work_thread);
connect(canRecv,&CanBase::emit_updata_led,this,&DeviceWidget::update_led);
connect(canRecv,&CanBase::emit_init_led,this,&DeviceWidget::init_led);
运行结果及详细报错内容
work_thread 可以被执行,update_led与init_led 没有被触发
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我通过断点调试的方式可以确定emit_updata_led和emit_init_led都已经发送
但如果我直接把canRecv定义为某一个类型,如canRecv = new CCanFdRecver; 那么所有函数都可以正常执行。
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
希望可以解决运行多态时,update_led与init_led 没有被触发的问题