Ok, I have to post my code because your suggest doesn't work (probably i miss something).<br><br> <br>class DomModel(QtCore.QAbstractItemModel):<br>&nbsp;&nbsp;&nbsp; def __init__(self, document, parent = None):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QtCore.QAbstractItemModel.__init_
_(self, parent)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.domDocument = document&nbsp;&nbsp; ##this is a QDomDocument object<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.rootItem = DomItem(self.domDocument, 0)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; ## some useful methods<br>&nbsp;&nbsp;&nbsp; def columnCount(self, parent):
<br>&nbsp;&nbsp;&nbsp; def data(self, index, role):<br>&nbsp;&nbsp;&nbsp; def headerData(self, section, orientation, role):<br>&nbsp;&nbsp;&nbsp; def index(self, row, column, parent):<br>&nbsp;&nbsp;&nbsp; def parent(self, child):<br>&nbsp;&nbsp;&nbsp; def rowCount(self, parent):<br>&nbsp;&nbsp;&nbsp; def findNodeByTagNameID(self,tagName,id):
<br>&nbsp;&nbsp;&nbsp; def validateDom(self,nodo):<br><br><br>&nbsp;&nbsp;&nbsp; def removeRows(self,arow,count,parent):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.beginRemoveRows(parent,arow,arow+count-1)<br>&nbsp;&nbsp;&nbsp; <br>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ii in range(count): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ##code for removing a row from QDomDocument here 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.endRemoveRows()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return True<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br><br>This is my model class. When i remove a row the qtreeview repaint the tree but the row deleted isn't the one i've selected.<br>
example:<br><br>the treeview show:<br><br>document<br>&nbsp;&nbsp;&nbsp;&nbsp; element1<br>&nbsp;&nbsp;&nbsp;&nbsp; element2<br>&nbsp;&nbsp;&nbsp;&nbsp; element3<br><br>pick&nbsp; elements2 for removing.<br><br>treeview update after removing but show:<br><br>document<br>&nbsp;&nbsp;&nbsp; element1<br>
&nbsp;&nbsp;&nbsp; element2<br><br><br><br>Now, if i do:<br><br>print&nbsp; qtreeview.model().domDocument.toString()&nbsp; <br><br>the result is:<br><br>document<br>&nbsp;&nbsp;&nbsp;&nbsp; element1<br>&nbsp;&nbsp;&nbsp;&nbsp; element3<br><br>so, the model is changed right. the removed element is the one that i picked.
<br><br>Any idea?<br><br><br>p.s. <span onclick="dr4sdgryt(event)">apologise for my english...hope it's </span><span onclick="dr4sdgryt(event)">understandable</span><br>&nbsp;&nbsp;&nbsp; <br><br><br><br><div><span class="gmail_quote">2006/9/8, Andreas Pakulat &lt;
<a href="mailto:apaku@gmx.de">apaku@gmx.de</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On 08.09.06 10:38:51, Oscar Cossu wrote:
<br>&gt; thank you for the advice, I have read the doc again (and again and again).<br>&gt; Now, I use a QTreeView ,what i have to do ?<br>&gt;<br>&gt; QTreeView::rowsAboutToBeRemoved(param)<br>&gt;<br>&gt; treeviewobj.model
().removeRow(param)<br>&gt;<br>&gt; QTreeView::rowsRemoved(param)<br><br>No.<br><br>&gt; or just call removeRow() that call itself beginRemoveRow and endRemoveRow&nbsp;&nbsp;?<br><br>Well, you said you have your own model, don't you? In there you've got
<br>your removeRows() function. If that one is implemented by doing<br>something like<br><br>beginRemoveRows(parent(), beginRow, endRow);<br>&lt;code that deletes the stuff from the underlying data, i.e. the xml tree&gt;<br>
endRemoveRows();<br><br>Then you're done. You can now use the model's removeRows() function to<br>remove rows. The same works for columns.<br><br>If it still doesn't work for you, please consider posting the important<br>
parts of your model. (i.e. leave out the data, index, parent, *count<br>functions).<br><br>Andreas<br><br>&gt; 2006/9/7, Andreas Pakulat &lt;<a href="mailto:apaku@gmx.de">apaku@gmx.de</a>&gt;:<br>&gt; &gt;<br>&gt; &gt;On 
07.09.06 16:44:23, Oscar Cossu wrote:<br>&gt; &gt;&gt; Hy all,&nbsp;&nbsp;I set the model of a QTreeView with an object that is a<br>&gt; &gt;subclass of<br>&gt; &gt;&gt; QAbstractItemModel.<br>&gt; &gt;&gt; When I change the model (ex. deleting a row) and emit layoutChanged()
<br>&gt; &gt;&gt; signal, the treeModel should update the view, but errors occur.<br>&gt; &gt;<br>&gt; &gt;Read the Qt documentation on model/view again. You shouldn't use<br>&gt; &gt;layoutChanged() but call QAbstractItemModel::beginRemoveRows() and
<br>&gt; &gt;::endRemoveRows (the same for inserting rows).<br>&gt; &gt;<br>&gt; &gt;Andreas<br>&gt; &gt;<br>&gt; &gt;--<br>&gt; &gt;Accent on helpful side of your nature.&nbsp;&nbsp;Drain the moat.<br>&gt; &gt;<br>&gt; &gt;_______________________________________________
<br>&gt; &gt;PyKDE mailing list&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:PyKDE@mats.imk.fraunhofer.de">PyKDE@mats.imk.fraunhofer.de</a><br>&gt; &gt;<a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
</a><br>&gt; &gt;<br><br>&gt; _______________________________________________<br>&gt; PyKDE mailing list&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:PyKDE@mats.imk.fraunhofer.de">PyKDE@mats.imk.fraunhofer.de</a><br>&gt; <a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde</a><br><br><br>--<br>Keep it short for pithy sake.<br><br>_______________________________________________<br>PyKDE mailing list&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:PyKDE@mats.imk.fraunhofer.de">
PyKDE@mats.imk.fraunhofer.de</a><br><a href="http://mats.imk.fraunhofer.de/mailman/listinfo/pykde">http://mats.imk.fraunhofer.de/mailman/listinfo/pykde</a><br></blockquote></div><br>