From 4bff948f46ccf7e8408139bf2fe954a34621cb63 Mon Sep 17 00:00:00 2001 From: Marius Bugge Monsen Date: Thu, 20 Aug 2009 15:22:16 +0200 Subject: Get the photoBrowser example working again. This required some ugly hacks in QtGraphicsGridView to get the item geometry correct. --- examples/photoAlbum/main.cpp | 10 ++-------- src/experimental/qgraphicsgridview.cpp | 10 +++++++--- src/qgraphicslistview.cpp | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/examples/photoAlbum/main.cpp b/examples/photoAlbum/main.cpp index 02a1abb..c106b31 100644 --- a/examples/photoAlbum/main.cpp +++ b/examples/photoAlbum/main.cpp @@ -32,7 +32,7 @@ class Photo : public QtGraphicsListViewItem { public: Photo(int index, QtGraphicsListView *view); - QSizeF sizeHint(int index, const QStyleOptionViewItemV4 *option, Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); }; @@ -41,10 +41,8 @@ Photo::Photo(int index, QtGraphicsListView *view) { } -QSizeF Photo::sizeHint(int index, const QStyleOptionViewItemV4 *option, Qt::SizeHint which, const QSizeF &constraint) const +QSizeF Photo::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const { - Q_UNUSED(option); - Q_UNUSED(index); Q_UNUSED(constraint); switch (which) { case Qt::MinimumSize: @@ -160,8 +158,6 @@ void ViewTransition::onTransition(QEvent *event) m_to->setOffsetToEnsureIndexIsVisible(index); // ### FIXME center on item m_to->doLayout(); // ensure the item is layed out qobject_cast(m_to->controller())->stop(); - //qDebug() << "to" << ((QObject*)m_to->itemForIndex(index)) << index; - //qDebug() << "from" << ((QObject*)m_from->itemForIndex(index)) << index; m_animation->setTargetObject(reinterpret_cast(m_to->itemForIndex(index))); m_animation->setStartValue(m_from->itemGeometry(index)); m_animation->setEndValue(m_to->itemGeometry(index)); @@ -272,5 +268,3 @@ int main(int argc, char *argv[]) return app.exec(); } - -//#include "main.moc" 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(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(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(item)->setGeometry(aligned); + else + item->setPos(aligned.topLeft()); } // remove unused items const int from = index - firstVisibleIndex; diff --git a/src/qgraphicslistview.cpp b/src/qgraphicslistview.cpp index 53fb8e0..09b57ac 100644 --- a/src/qgraphicslistview.cpp +++ b/src/qgraphicslistview.cpp @@ -987,7 +987,7 @@ void QtGraphicsListView::doLayout() // add more items and set geometry while (index < count && coordinate < areaEnd) { if (QGraphicsObject *item = d->creator->create(index, this)) { - d->items.append(QPair(index, item)); + d->items.append(QPair(index, item)); const bool isWidget = item->isWidget(); const QSizeF size = (isWidget ? static_cast(item)->effectiveSizeHint(Qt::PreferredSize, constraint) -- cgit v1.2.3