diff options
Diffstat (limited to 'src/experimental/qgraphicsgridview.cpp')
-rw-r--r-- | src/experimental/qgraphicsgridview.cpp | 10 |
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; |