<div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: Candara;color: #000000">Hi again.  I usually try to keep banging on problems like this until I solve them, but this one has me stumped.  I'm hoping someone has enough familiarity with what's at play here to suggest a way out.<div class="mb_sig"></div><div><br></div><div>I have a <span style="font-family: Courier New">QTreeView</span> with an underlying node tree structure and data model, which displays a list of categories and subcategories.</div><div><br></div><div>There is also a dialog box (defined in the attached <i>QtDesigner</i> <span style="font-family: Courier New">.ui</span> file) which displays the items in the <span style="font-family: Courier New">QTreeView</span> and supports the following operations:</div><div><ul><li>Add items to the tree (the Main and Sub buttons add a main category or subcategory, respectively)</li><li>Delete items from the tree (the Delete button)</li><li>Change the description of an item in the tree (double-click an item, and it is editable via a delegate with a <span style="font-family: Courier New">QLineEdit</span>-based editor widget)</li></ul><div>Code is attached.  Sorry it's a bit long; I distilled it down as much as I could.</div><div><br></div><div>The problem seems to occur due to a combination of sorting and item deletion.  Because I want the items to remain in alphabetical order, the <span style="font-family: Courier New">setData()</span> method in the model sorts the items at the affected level when there is either an insertion or a description is changed (line #218).  I am emitting the <span style="font-family: Courier New">layoutAboutToBeChanged</span> and <span style="font-family: Courier New">layoutChanged</span> signals before and after the sort, as I understand one should.  (I probably could accomplish this with a <span style="font-family: Courier New">QSortFilterProxyModel</span>, but just using sort directly seemed simple enough, so I went with it).</div></div><div><br></div><div>It seems that if I make a change that effects a sort lower in the tree, and then delete an item from further up in the tree, the code crashes.  The specific sequence I've been using (though I suspect there are others) is this:</div><div><ul><li>Start the app (guess that would have been self-evident)</li><li>Expand the <b>Pet Expenses</b> item</li><li>Double-Click <b>Chow</b>, and change it to anything that occurs alphabetically after 'Miscellaneous'.  When the editor is closed, the sort should position the item at the end of the <b>Pet Expenses</b> subcategory list.</li><li>Now delete the item you just edited (it should be the current item).</li><li>Next, select <b>Dining</b> and click the Delete button to delete that item.</li></ul><div>On my machine, this consistently causes the app to crash.</div></div><div><br></div><div>I've think I've narrowed the problem down to the model's <span style="font-family: Courier New">parent()</span> method.  Specifically, it crashes on the <span style="font-family: Courier New">index.internalPointer()</span> call on line #192 (at the time of the crash, the <span style="font-family: Courier New">print()</span> statement on line #191 will display, but the one on line #193 will not).  The row number it is trying to get <span style="font-family: Courier New">internalPointer()</span> for is <span style="font-family: Courier New">1</span> when it crashes.</div><div><br></div><div>I'm guessing this is caused by trying to access a deleted item (I'd have thought the <span style="font-family: Courier New">if not index.isValid()</span> statement on line #188 would have prevented that).  I also suspect it is the sorting that is causing the confusion, because if I comment out the sort line, it doesn't crash.  (But I'd have thought the <span style="font-family: Courier New">layoutAboutToBeChanged</span><span style="font-size: 12pt;line-height: 1.5"> </span><span style="font-size: 12pt;line-height: 1.5">and</span><span style="font-size: 12pt;line-height: 1.5"> </span><span style="font-family: Courier New">layoutChanged</span><span style="font-size: 12pt;line-height: 1.5"> </span><span style="font-size: 12pt;line-height: 1.5">signals would have taken care of that).</span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">Any help or insight would surely be appreciated.</span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">Thanks again.</span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">/John</span></div></div>