diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 73083773f5d..4795d9f1b14 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -237,6 +237,9 @@ void QTreeView::setModel(QAbstractItemModel *model) // QAbstractItemView connects to a private slot disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(_q_rowsRemoved(QModelIndex,int,int))); + // do header layout after the tree + disconnect(d->model, SIGNAL(layoutChanged()), + d->header, SLOT(_q_layoutChanged())); // QTreeView has a public slot for this connect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int))); diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index 5de0ca6c229..dfcaa9b5b91 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -313,17 +313,6 @@ public: endRemoveColumns(); } - void removeAddLastColumnLayoutChanged() // for taskQTBUG_41124 - { - // make sure QHeaderView::_q_layoutChanged() is called - emit layoutAboutToBeChanged(); - --cols; - emit layoutChanged(); - emit layoutAboutToBeChanged(); - ++cols; - emit layoutChanged(); - } - void removeAllColumns() { beginRemoveColumns(QModelIndex(), 0, cols - 1); @@ -1317,19 +1306,6 @@ void tst_QTreeView::columnHidden() for (int c = 0; c < model.columnCount(); ++c) QCOMPARE(view.isColumnHidden(c), true); view.update(); - - // QTBUG_41124: - // QHeaderViewPrivate::_q_layoutChanged was not called because it was - // disconnected in QTreeView::setModel(). _q_layoutChanged restores - // the hidden sections which is tested here - view.setColumnHidden(model.cols - 1, true); - model.removeAddLastColumnLayoutChanged(); - // we removed the last column and added a new one - // (with layoutToBeChanged/layoutChanged() for both) so column - // 1 is a new column and therefore must not be hidden when - // _q_layoutChanged() is called and is doing the right stuff - QCOMPARE(view.isColumnHidden(model.cols - 1), false); - } void tst_QTreeView::rowHidden()