[PyKDE] slowness of QTableWidget sort ?

Andreas Pakulat apaku at gmx.de
Thu Aug 24 09:19:23 BST 2006


On 24.08.06 09:28:34, bastian salmela wrote:
> I have rather big list of things (9000 rows, 7 columns) that I read from file, 
> and add to QTableWidget, and it seems _very_ slow..

Don't use a QTableWidget for this.

> the filling of table takes some (5-10) seconds, and when I click some of the 
> headers to sort it, it takes minutes. so obviously that was not usable. 
> I decided test the loading and sorting in just python lists and list.sort() and 
> guess what, whole process takes 1 or 2 seconds.. 
> I understand 9000 rows is a lot, and as this is a toplist, i dont necessary 
> need that many, so after inital sort I now add to QTableWidget only 500 first 
> on the list, which makes the table usable. clicking the headers for sorting it 
> according to another column, still takes a bit though, and it got me 
> wondering.. 
> so why is QTableWidget so slow?

Because it works on QTableWigdetItem's not just strings or numbers. It
has to sort complex items. Also I'm not sure, but the QTableWidget has
to store all it's items in memory at once which maybe quite a lot with
9000x7.

Use a QTableView together with an apropriate model. You may be able to
just use QStandardItemModel or you can roll your own with
QAbstractTableModel as base. That'll probably speed up things a lot.

Andreas

-- 
You will never know hunger.




More information about the PyQt mailing list