[PyQt] Using QModelIndex.internalPointer

Bakuriu giacomo.alzetta at gmail.com
Sat Dec 5 19:05:48 GMT 2009




David Boddie wrote:
> 
> Then this would indicate that there may be a bug with the createIndex()
> wrapper in PyQt, though it would be difficult to know exactly what the
> cause is without a test case or minimal example that demonstrates the
> problem.
> 
> Which versions of SIP and PyQt are you using?
> 
> 

I'm using PyQt 4.6 and sip 4.9.1-snapshot-20091015
I think it's strange for PyQt to have a bug in such a crucial method.
Anyway I'll try to post some code when I have time...
Right now the only thing I can show to explain better what I meant is this:

I have a class that's something like this:

class DataContainer(object):
    def __init__(self,data):
        self._data = data
    def data(self):
        return self._data


In my index method (of the model) I do something like this:

def index(self,row,column,parent=QModelIndex()):
    if not parent.isValid():
        return self.createIndex(row,column,None)
    else:
        parent_row = parent.row()
        obj = self.manager.get_item(parent_row,row)
        return self.createIndex(row,column,obj)


And my parent method looks like this:

def parent(self,index):
    if not index.isValid():
        return QModelIndex()
    obj = index.internalPointer()
    if obj is None:
        return QModelIndex()
    else:
        parent_row = self.manager.index(obj)
        return self.createIndex(parent_row,index.column(),None)


The exception is raised when "self.manager.index" is called;
because the manager class to obtain the index of the object calls "data",
and this call raise an AttributeError like this:

AttributeError: "DataContainer" object has no attribute "_data"

Like if the object wasn't initialized.

I think I'll try to rewrite it following exactly the "simpletreemodel" to
check if it is a bug or if I'm doing something wrong...
Thank you for your attention David.
-- 
View this message in context: http://old.nabble.com/Using-QModelIndex.internalPointer-tp26635941p26658308.html
Sent from the PyQt mailing list archive at Nabble.com.



More information about the PyQt mailing list