summaryrefslogtreecommitdiffstats
path: root/src/experimental/qgraphicsgridview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/experimental/qgraphicsgridview.cpp')
-rw-r--r--src/experimental/qgraphicsgridview.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/experimental/qgraphicsgridview.cpp b/src/experimental/qgraphicsgridview.cpp
index b8375c3..e50b45a 100644
--- a/src/experimental/qgraphicsgridview.cpp
+++ b/src/experimental/qgraphicsgridview.cpp
@@ -366,14 +366,18 @@ void QtGraphicsGridView::doLayout()
d->items.append(QPair<int,QGraphicsObject*>(index, d->creator->create(index, this)));
QGraphicsObject *item = d->items.at(i).second;
const QPointF pos = d->gridPosition(index);
- const QSizeF size = item->boundingRect().size();
+ const QSizeF size = (item->isWidget()
+ ? static_cast<QGraphicsWidget*>(item)->effectiveSizeHint(Qt::PreferredSize, QSizeF(gridSize, gridSize))
+ : item->boundingRect().size());
const QRectF grid(pos.x(), pos.y(), gridSize, gridSize);
const QRectF aligned = QStyle::alignedRect(option.direction,
Qt::AlignCenter,
size.toSize(),
grid.toRect());
- //item->setGeometry(aligned);
- item->setPos(aligned.topLeft());//### FIXME
+ if (item->isWidget()) // ### FIXME
+ static_cast<QGraphicsWidget*>(item)->setGeometry(aligned);
+ else
+ item->setPos(aligned.topLeft());
}
// remove unused items
const int from = index - firstVisibleIndex;