Hi Matt, <br><br>Thanks for your response, I&#39;m using Qt 4.2.<br><br>cheers<br>&nbsp;Babak<br><br><div><span class="gmail_quote">On 04/02/2008, <b class="gmail_sendername">Matt Newell</b> &lt;<a href="mailto:newellm@blur.com">newellm@blur.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Monday 04 February 2008 08:52:44 Baba-k wrote:<br>&gt; Hi everyone,<br>&gt;<br>&gt; I&#39;m relatively new to pyqt and am encountering some problems while trying<br>&gt; to make a custom tree widget (using the model/view classes) that i was<br>
&gt; hoping some one here might be able to help me with.<br>&gt;<br>&gt; Ive made a custom treewidget which is using a custom view and model. The<br>&gt; view is a subclass of QTreeView and the model a subclass of<br>&gt; QAbstractItemView. The model class takes its data in the form of a custom<br>
&gt; item class. Both the custom model and item classes are very similar to the<br>&gt; examples in the docs just with some extra functionality where needed. The<br>&gt; model and view classes are being used in a custom QWidget which is inside a<br>
&gt; QDialog.<br>&gt;<br>&gt; The tree is designed to show the difference between two hierarchies of<br>&gt; data, the size of these hierarchies can vary. Before calling the &#39;show&#39;<br>&gt; method of the QDialog object, the items inside the tree are expanded.<br>
&gt; The problem I&#39;m having is that when displaying fairly large hierarchies<br>&gt; (7000+ rows) it can take onwards of 10mins for the contents of the widget<br>&gt; to be drawn. If I don&#39;t expand the items in the tree before calling &#39;show&#39;<br>
&gt; the it is pretty much instant. Has anyone experienced anything like this<br>&gt; before ??<br>&gt;<br>&gt; Any ideas or suggestions about this would be very much appreciated :)<br>&gt;<br>&gt; thanks alot<br>&gt;&nbsp;&nbsp;babak<br>
<br>Which version of qt are you using?&nbsp;&nbsp;Each expanded item is (internally) stored<br>as a qpmi(QPersistentModelIndex).&nbsp;&nbsp;With Qt versions &lt; 4.3.0, creating each<br>qpmi is an O(n) operation, where n is the number of existing qpmis.&nbsp;&nbsp;Since<br>
you are expanding all the items in the view, that results in an O(n^2)<br>operation.<br><br>With qt &gt;= 4.3.0, qpmi creation is O(log n), since they are stored in a sorted<br>list, and a binary search is used to find/create the new qpmi.&nbsp;&nbsp;With your<br>
code, this would result in total complexity of O(n log n), quite an<br>improvement.<br><br>Matt<br></blockquote></div><br>