[PyQt] Problem with implementation of dummy (no-op) proxy model
    Hans Meine 
    meine at informatik.uni-hamburg.de
       
    Thu Oct 28 15:40:59 BST 2010
    
    
  
Op den Dunnersdag 28 Oktober 2010 Klock 15:08:16 hett Dan Halbert schreven:
> On Thursday, October 28, 2010 8:28am, "Hans Meine" <meine at informatik.uni-
hamburg.de> said:
> > I am about to give up now, but first I want to post my current code
> > again; I added some assertions which show an interesting fact which I
> > have no explanation for:  One assertion fails, since I am getting a
> > QModelIndex of my proxy model in which internalPointer does *not*
> > contain a QModelIndex of the proxied model anymore, but NULL/None.
> 
> There have been some related discussions on the mailing list you might take
> a look at, for instance:
> http://www.riverbankcomputing.com/pipermail/pyqt/2006-July/thread.html#137
> 86. Google [ site:riverbankcomputing.com internalpointer ] to find some
> more.
Thanks.  They're related, and although I could not find a single posting with 
a good explanation, I think I finally understood what's going on.  I will 
explain it in a separate posting in a minute.
> It might also be interesting to rewrite your Python code in the
> corresponding C++ and see if you see similar behavior.
Yes, I would get the exact same behaviour, only that I would already notice 
that I am doing something wrong while coding, since I would not be tempted to 
rely on proper reference counting.
> In my limited use of proxy models, I have not found it useful to store
> QModelIndex objects in the internalPointer().
No, it's not possible.
> Instead I have created some
> "proxy data objects" that reference the actual data model (which is
> Qt-independent).
The crucial part is that these "proxy data object" need to be kept alive.  The 
kind of object does not really matter.
> I subclassed QSortFilterProxyModel since it implemented a
> bunch of stuff I would otherwise have had to reimplement.
I don't think that would help me in any way, and I have had bad experiences 
with deriving from too specialized classes in PyQt.
> I would also note that your proxy model did not implement mapToSource() and
> mapFromSource() as required, though I don't think they would be called in
> the simple example you posted.
That's because I do not derive from QAbstractProxyModel, but just from a 
QAbstractItemModel directly.
Thanks for the additional pointers,
  Hans
    
    
More information about the PyQt
mailing list