Hi all,<br>
<br>
&nbsp;I'm writing an interface for displaying and processing sequences of images. I'm using QCanvasSprites to<br>
contain and animate the sequences. My first implementation worked, but when I cleaned it up a bit, I got<br>
segmentation faults. The problem appeared to be that QCanvasSprite takes a QPixmapArray for parameter,<br>
but that the sprite doesn't seem to manage the array's memory. So when I wrote a gui class a bit like this:<br>
<br>
&nbsp; class MyGui( QMainWindow ):<br>
&nbsp; &nbsp; def __init__( self ):<br>
&nbsp;&nbsp; &nbsp;&nbsp; ...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.canvas = QCanvas( 200, 200 )<br>
&nbsp;&nbsp; &nbsp;&nbsp; self.seqView = QCanvasSprite( QPixmapArray( listOfQPixmap ), self.canvas )<br>
<br>
I got a segmentation fault as soon as the program exited MyGui.__init__, most likely the first time the gui tried to<br>
refresh the sprite. Same thing with:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pixArray = QPixmapArray( listOfQPixmap ),<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.seqView = QCanvasSprite( pixArray , self.canvas )<br>
<br>
What fixed it was this:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.pixArray = QPixmapArray( listOfQPixmap ),<br>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.seqView = QCanvasSprite( self.pixArray , self.canvas )<br clear="all"><br>
Why is this? Logically, QCanvasSprite should hold a pointer towards the pixmap array, so even if the variable<br>
goes out of scope, the sprite should still point to the array, shouldn't it. It works that way with QCanvas: you <br>
can for example do this:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.canvas = QCanvas( 200,200 )<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QCanvasRectangle( 20, 20, 30, 40, self.canvas ).show()<br>
<br>
While the QCanvasRectangle goes out of scope, it still remains accessible through the self.canvas variable: it <br>
remains visible and you can access it for instance through QCanvas.allItems()[0]. Why doesn't QCanvasSprite <br>
follow this logic? Is my third example the right way of using the class, or are there better options? Or did I miss<br>
something obvious? I'm using python 2.3, Qt 3.3.3, and PyQt 3.13<br><br>
-- <br>Alex Borghgraef