Hi Radim On Wed, Feb 12, 2014 at 8:03 PM, Radim Blazek <[email protected]> wrote: > On Wed, Feb 12, 2014 at 1:45 PM, Radim Blazek <[email protected]> wrote: >> I am using rubber band in Python plugin: >> self.rb = QgsRubberBand(self.canvas, QGis.Polygon) >> and on mouse move >> self.rb.addPoint( point, update ) >> >> It works well on most systems only for Win7/32bit (QGIS 2.0.1, Python >> 2.7.4) it was reported that it fails with "RuntimeError: underlying >> C/C++ object has been deleted"
When does it report the error - when closing QGIS? >> I see that ownership of rubber band is passed to map canvas >> >> QgsRubberBand( QgsMapCanvas* mapCanvas /TransferThis/, >> QGis::GeometryType geometryType = QGis::Line ); >> >> that is OK, but QgsMapCanvas should not delete QGraphicsItem until it >> is destructed. >> >> So how can the QgsRubberBand be deleted before QGIS is closed? > > BTW, because true owner of QGraphicsItem is QGraphicsScene, should not > we first mScene->removeItem() (which returns ownership) before item is > deleted in QgsMapCanvas destructor? That's the correct approach in Python (IIRC). You can remove the item in your map tool's deactivate() method. Regards Martin _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
