@@ -77,16 +77,20 @@ void Qgs3DMapToolIdentify::mousePressEvent( QMouseEvent *event )
7777
7878void Qgs3DMapToolIdentify::activate ()
7979{
80- Qt3DRender::QObjectPicker *picker = mCanvas ->scene ()->terrainEntity ()->terrainPicker ();
81- connect ( picker, &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
80+ if ( QgsTerrainEntity *terrainEntity = mCanvas ->scene ()->terrainEntity () )
81+ {
82+ connect ( terrainEntity->terrainPicker (), &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
83+ }
8284
8385 mCanvas ->scene ()->registerPickHandler ( mPickHandler .get () );
8486}
8587
8688void Qgs3DMapToolIdentify::deactivate ()
8789{
88- Qt3DRender::QObjectPicker *picker = mCanvas ->scene ()->terrainEntity ()->terrainPicker ();
89- disconnect ( picker, &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
90+ if ( QgsTerrainEntity *terrainEntity = mCanvas ->scene ()->terrainEntity () )
91+ {
92+ disconnect ( terrainEntity->terrainPicker (), &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
93+ }
9094
9195 mCanvas ->scene ()->unregisterPickHandler ( mPickHandler .get () );
9296}
@@ -137,6 +141,8 @@ void Qgs3DMapToolIdentify::onTerrainEntityChanged()
137141{
138142 // no need to disconnect from the previous entity: it has been destroyed
139143 // start listening to the new terrain entity
140- Qt3DRender::QObjectPicker *picker = mCanvas ->scene ()->terrainEntity ()->terrainPicker ();
141- connect ( picker, &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
144+ if ( QgsTerrainEntity *terrainEntity = mCanvas ->scene ()->terrainEntity () )
145+ {
146+ connect ( terrainEntity->terrainPicker (), &Qt3DRender::QObjectPicker::clicked, this , &Qgs3DMapToolIdentify::onTerrainPicked );
147+ }
142148}
0 commit comments