diff options
-rw-r--r-- | src/quick/items/qquicktableview.cpp | 14 | ||||
-rw-r--r-- | tests/auto/quick/qquicktableview/tst_qquicktableview.cpp | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/quick/items/qquicktableview.cpp b/src/quick/items/qquicktableview.cpp index ab57a8ea0b..4b34e3b2c1 100644 --- a/src/quick/items/qquicktableview.cpp +++ b/src/quick/items/qquicktableview.cpp @@ -628,6 +628,12 @@ void QQuickTableViewPrivate::updateContentWidth() return; } + if (loadedItems.isEmpty()) { + QBoolBlocker fixupGuard(inUpdateContentSize, true); + q->QQuickFlickable::setContentWidth(0); + return; + } + const int nextColumn = nextVisibleEdgeIndexAroundLoadedTable(Qt::RightEdge); const int columnsRemaining = nextColumn == kEdgeIndexAtEnd ? 0 : tableSize.width() - nextColumn; const qreal remainingColumnWidths = columnsRemaining * averageEdgeSize.width(); @@ -655,6 +661,12 @@ void QQuickTableViewPrivate::updateContentHeight() return; } + if (loadedItems.isEmpty()) { + QBoolBlocker fixupGuard(inUpdateContentSize, true); + q->QQuickFlickable::setContentHeight(0); + return; + } + const int nextRow = nextVisibleEdgeIndexAroundLoadedTable(Qt::BottomEdge); const int rowsRemaining = nextRow == kEdgeIndexAtEnd ? 0 : tableSize.height() - nextRow; const qreal remainingRowHeights = rowsRemaining * averageEdgeSize.height(); @@ -1614,6 +1626,8 @@ void QQuickTableViewPrivate::processRebuildTable() if (rebuildState == RebuildState::VerifyTable) { if (loadedItems.isEmpty()) { qCDebug(lcTableViewDelegateLifecycle()) << "no items loaded!"; + updateContentWidth(); + updateContentHeight(); rebuildState = RebuildState::Done; } else if (!moveToNextRebuildState()) { return; diff --git a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp index 405524b704..7c4a5ed65b 100644 --- a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp +++ b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp @@ -2719,6 +2719,8 @@ void tst_QQuickTableView::replaceModel() QTRY_COMPARE(tableView->rows(), 2); tableView->setModel(QVariant()); QTRY_COMPARE(tableView->rows(), 0); + QCOMPARE(tableView->contentWidth(), 0); + QCOMPARE(tableView->contentHeight(), 0); } QTEST_MAIN(tst_QQuickTableView) |