Qt 信号到插槽连接:循环内迭代触发信号 设置光线投射器
我将添加到根实体并将其信号连接到插槽:Qt 信号到插槽连接:循环内迭代触发信号 设置光线投射器,qt,signals-slots,qt3d,Qt,Signals Slots,Qt3d,我将添加到根实体并将其信号连接到插槽: void MySceneClass::createRootEntity() { // ... //将光线投射器添加到根图元 m_rayCaster=新的Qt3DRender::QRayCaster(m_rootEntity); m_rayCaster->setRunMode(Qt3DRender::QAbstractRayCaster::SingleShot); m_rootEntity->addComponent(m_rayCaster); //设置信号
void MySceneClass::createRootEntity()
{
// ...
//将光线投射器添加到根图元
m_rayCaster=新的Qt3DRender::QRayCaster(m_rootEntity);
m_rayCaster->setRunMode(Qt3DRender::QAbstractRayCaster::SingleShot);
m_rootEntity->addComponent(m_rayCaster);
//设置信号到插槽的连接
QObject::connect(m_rayCaster和Qt3DRender::QRayCaster::hitsChanged,
这,&MySceneClass::handleRayCasterHits);
// ...
}
我记录射线施法者按槽命中的次数:
void MySceneClass::handleRayCasterHits(常量Qt3DRender::QAbstractRayCaster::Hits)
{
qDebug()castRay(QVector3D(i,i,50.0f))//原点
QVector3D(0.0f,0.0f,-1.0f),//方向
-1//length(-1表示无限长)
);
}
}
问题 问题是,在所有测试中,只有
triggerRayCaster()
内触发器循环的最后一次迭代被handleRayCasterHits()
内的插槽捕获并记录
我不明白为什么。我遗漏了什么吗?要理解为什么会发生这种情况,您需要了解Qt3D的工作原理: