[PyQt] QAbstractItemModel causes segfault
Sebastian Elsner
sebastianelsner at freenet.de
Mon Apr 12 08:41:08 BST 2010
*bump*
No ideas on this one?
On Wed, 07 Apr 2010 18:14:28 +0200, Sebastian Elsner
<sebastianelsner at freenet.de> wrote:
> One additional question:
>
> You wrote, that internalPointer() is not meant to be used outside of the
> model. But how would I get the associated object from a QModelIndex?
>
> I am using selectedIndex() on the view to get the indexes, but how to
> proceed from there on?
>
>
>
> is On Tue, 06 Apr 2010 17:40:09 +0200, Phil Thompson
> <phil at riverbankcomputing.com> wrote:
>
>> On Tue, 06 Apr 2010 16:23:30 +0200, "Sebastian Elsner"
>> <sebastianelsner at freenet.de> wrote:
>>> Hello,
>>>
>>> I finally was able to compile an example case, which is not too
>>> complex,
>>
>>> please find it attached. Run the python script, expand one LevelOne
>>> item
>>
>>> and select a LevelTwo item and in the menu choose add/edit levelthree.
>>> If
>>
>>> you do this you should see an error or the interpreter will crash (try
>>> adding more items und expand them!). As said this error can be
>>> prevented
>>
>>> by adding strong references for all items in the tree (which is
>>> something
>>
>>> the createIndex obviously does not). Uncomment line 210 and 211 to see
>>> that adding all items to a list helps.
>>>
>>> The root item is owned by the model, so this should work, right?!
>>
>> The root item is owned by the model, but does the root item own all of
>> its
>> children, grandchildren etc.? I can see that it owns its children
>> because
>> you explicitly call its appendChild() method, but I'm not clear where
>> the
>> children's equivalent methods are called. Have you tried printing out
>> the
>> tree of items starting with the root item at various point to make sure
>> the
>> tree contains what you think it should?
>>
>> QAbstractItemModel won't maintain your model for you. As the
>> documentation
>> says, it "provides the abstract interface for item model classes" - the
>> key
>> word being "interface". It is not the container of the model data -
>> that's
>> the responsibility of a sub-class.
>>
>> Phil
>
>
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
More information about the PyQt
mailing list