[PyQt] PyQt snapshot crash on Qt5.4 with bogus QGraphicsVideoItem instance

Phil Thompson phil at riverbankcomputing.com
Fri Jan 2 15:31:40 GMT 2015


On 02/01/2015 2:28 pm, lloyd konneker wrote:
> This is just a follow up to more clearly document the problem and
> solution (since I garbled the thread.)
> 
> If you are using QGraphicsItems and PyQt and you experience symptoms
> where an object is mysteriously of type QGraphicsVideoItem (and you
> are NOT using QGraphicsVideoItem):
> 
> The solution is in the file
> PyQt…/sip/QMultimediaWidgets/qgraphicsvideoitem.sip, delete the code
> between “%ConvertToSubClassCode” and “%End”, and then totally rebuild
> PyQt (starting with the configure step.)   It is not enough to just re
> make, since the configure step is when code is generated using the
> .sip files.
> 
> My understanding of the situation:  QGraphicsItems are lightweight
> objects not inheriting QObject and thus having no introspection.  For
> certain calls to Qt that return QGraphicsItem objects (or containers
> of same) PyQt wraps  the returned objects but must determine their
> type (subclass of QGraphicsItem) by calling their type() method.
> However, QGraphicsVideoItem fails to implement the type() method
> (which probably should be reported as a bug in Qt).  So PyQt ‘casts’
> the objects to QGraphicsVideoItem (unless you follow the solution.)

Thanks for confirming that the hack worked.

It's only a problem if you create a QGraphicsItem yourself and also 
don't reimplement the type() method for it.

I'll improve the test in tonight's snapshot.

Phil


More information about the PyQt mailing list