QT emit信号的时候出问题,“底层由于接收到。。。”出错。

Donal_zero Donal_zero 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
写程序的过程中,要用UDP接数,并解析后传输到别的类里面去。
void CNetMng::slot_ReceiveNavData()
{
if (m_pUdpNavReceive->hasPendingDatagrams())
{
QByteArray datagram;
int size=m_pUdpNavReceive->bytesAvailable();
datagram.resize(size);
m_pUdpNavReceive->readDatagram(datagram.data(),datagram.size());
STNavDataPkg *navDataPkg = new STNavDataPkg();
if (datagram[8]==0xd4||datagram[8]==0xd5)
{
if (datagram[8]==0xd4)
m_sysType=NAV_SYS_GPS;
else
m_sysType=NAV_SYS_BD2;
//memcpy(&m_navDataPkg,datagram.data(),pkgSize);
navDataPkg = (STNavDataPkg*)(datagram.data());
emit sig_NavPkgIUpdated(m_sysType,navDataPkg->navCodePkgI);
}
}
}

代码如上,就在最后一行 emit sig_NavPkgIUpdated出问题,如果我把他注释掉,就不会报错,运行也正常,但是加上这一行代码之后就会报错。如果我不把这个信号connect到别的slots,也不会报错。

void CNetMng::sig_NavPkgIUpdated(EnumNavSysType _t1, STNavCodePkgI _t2)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)) };
QMetaObject::activate(this, &staticMetaObject, 2, _a);
}

报错后,会跳到上面这一段代码里,一直也找不到原因。
...全文

相关推荐

QT中emit关键字详解[代码]

本文详细介绍了QT中emit关键字的使用方法及其在信号与槽机制中的作用。emit用于发射信号,与信号(signal)配合使用,实现对象间的通信。当对象状态改变时,通过emit发送信号到槽函数,触发相应操作。文章通过一个具体示例展示了如何创建信号、定义槽函数、使用emit发送信号以及通过connect连接信号与槽。示例中,点击按钮后,emit将文本内容发送到槽函数,最终在label上显示更新后的文本。整个过程清晰展示了emit在QT中的实际应用,帮助读者理解其核心功能和使用场景。

JavaSoul111

PyQT5 emit 和 connect的用法详解

今天小编就为大家分享一篇PyQT5 emit 和 connect的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

抹蜜茶

QT信号与槽机制浅析

QT信号与槽机制浅析Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用

wxf120620056

Qt信号和槽

信号与槽机制是qt的核心,一个信号可以接多个槽,多个信号也可以接一个槽,当然一个信号也可以接一个槽。本文的重点是讲述emit的应用,emit是qt中定义的宏,是用来发送一个信号,然后你再写一个槽函数。在构造函数中,通过connect函数将此信号与你所写的槽连接起来,即可使用。

yangang1899

Qt不同类进行信号与槽建立,并传递参数

Qt不同类进行信号与槽建立,并传递参数,Qt不同类之间槽函数连接

妙为
评论 8
收藏 已收藏
分享
返回顶部
Donal_zero
Qt 21,503 成员 26,693 内容