+ int gridWidth = itemWidth + spacing * 2;
+ int gridHeight = itemHeight + spacing;
+ if (rowArrangement) {
+ const int contentWidth = viewport()->width() - 1 -
+ style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, horizontalScrollBar());
+ const int horizItemCount = contentWidth / gridWidth;
+ if (horizItemCount > 0) {
+ gridWidth += (contentWidth - horizItemCount * gridWidth) / horizItemCount;
+ }
+ } else {
+ const int contentHeight = viewport()->height() - 1 -
+ style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, verticalScrollBar());
+ const int vertItemCount = contentHeight / gridHeight;
+ if (vertItemCount > 0) {
+ gridHeight += (contentHeight - vertItemCount * gridHeight) / vertItemCount;
+ }
+ }
+ setGridSize(QSize(gridWidth, gridHeight));