The use of QHeaderView::ResizeToContents, in my experience, makes the start up time of a table view on a large model unacceptable. To achieve this, every value in the model is fetched, its width calculated, and the largest value in the row/column used to set the section width. For a 10,000 row by 10 column table this means that your model's data() method is called 100,000 times to fetch the display value, and probably a few more times for each cell to get formatting information (Font, decoration, size hint roles). It's possible that using it on both rows and columns repeats the table scan twice. If you can possibly live with a fixed width then you'll find this faster.