From 03c5eacfbb7f8fa294368bff812428680a0b9f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Sat, 9 Mar 2013 21:15:28 +0100 Subject: resizeToContents - QTableView - faster hint when view is hidden In some situations we can get into resizeSections in a hidden QHeaderView. If the headerView is hidden then we look at all the rows, and that can be extemely expensive for a large model. This patch limits the sizeHint with only looking at a maximum 1000 rows. Though this is more inaccurate it is also faster - and it is not much different from what QTreeView does. Change-Id: Ief4b54c5a3c5a0db02e8b595c9b9b3162633ee67 Reviewed-by: Stephen Kelly --- .../gui/itemviews/qtableview/tst_qtableview.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests/benchmarks/gui/itemviews') diff --git a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp index c32ff0d099..b590269b70 100644 --- a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp @@ -44,6 +44,8 @@ #include #include #include +#include +#include class QtTestTableModel: public QAbstractTableModel { @@ -149,6 +151,7 @@ private slots: void columnInsertion(); void columnRemoval_data(); void columnRemoval(); + void sizeHintForColumnWhenHidden(); private: static inline void spanInit_helper(QTableView *); }; @@ -361,5 +364,23 @@ void tst_QTableView::columnRemoval() } } +void tst_QTableView::sizeHintForColumnWhenHidden() +{ + QTableView view; + QStandardItemModel model(12500, 6); + for (int r = 0; r < model.rowCount(); ++r) + for (int c = 0; c < model.columnCount(); ++c) { + QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(r).arg(c)); + model.setItem(r, c, item); + } + + view.horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + view.setModel(&model); + QBENCHMARK_ONCE { + view.horizontalHeader()->resizeSection(0, 10); // this force resizeSections - on a hidden view. + } + +} + QTEST_MAIN(tst_QTableView) #include "tst_qtableview.moc" -- cgit v1.2.3