[PyQt] QModelIndex.internalPointer

Jeremy Sanders jeremy at jeremysanders.net
Mon Apr 25 10:05:17 BST 2011


Hi - I've hit several crashes with Qt's model code with PyQt.

Can someone clear up the ownership rules for objects given to 
QAbstractItemModel.createIndex and accessed with 
QModelIndex.internalPointer?

I tried creating a layer of indirection when using createIndex, e.g.

class Indirect(object):
  def __init__(self, realobj):
    self.realobj = realobj

...
self.createIndex(row, col, Indirect(realobj))

This breaks rather horribly. The objects returned by internalPointer can be 
completely random (the model index is however valid), with a different type. 
Is because PyQt uses some sort of python id, which is reallocated by python 
because the Indirector has no references to it?

I suppose I will have to hack something like storing a reference to the 
Indirect object in the realobj.

Jeremy 

-- 
http://www.jeremysanders.net/



More information about the PyQt mailing list