0

我有一个在 iconMode 中使用 QListView 的照片浏览器。当双击照片缩略图时,我会显示一个带有全尺寸图像的 QWidget。

我想为全尺寸图像的显示设置动画,从单击图标的位置缩小,但我无法弄清楚如何访问几何图形。我用来显示图像的例程位于底部。我一直在尝试访问几何但没有成功。我已经用 selectionModel() 尝试了一些东西,但我认为这是错误的。我缺少什么明显的东西?

    QItemSelection sel = thumbView->selectionModel()->selection();
    qDebug() << "sel.count()" <<  sel.count();
    QItemSelectionRange selItem = sel.first();
    qDebug() << "selItem" << selItem.left() <<selItem.top()<< selItem.right()<< selItem.bottom();

一旦我得到几何图形,我将做一个从图标大小到 MainWindow 大小的 QPropertyAnimation。


void ImageBase::displayImageFullsize(const QModelIndex &index)
{
    QSqlRecord record = imageModel->record(index.row());

    QByteArray image_data = record.value(3).toByteArray();

    QPixmap pixmap = QPixmap();
    pixmap.loadFromData(image_data);

    imageView->setPixmap(pixmap);
    imageView->setMinimumSize(QSize(1024,768));
    imageView->adjustSize();
    imageView->show();
}

在此处输入图像描述

4

1 回答 1

1

您可以使用visualRect ( const QModelIndex & index )获取项目的 QRect

例子:

void UrlView::mousePressEvent(QMouseEvent *event) // Derived from QAbstractItemView
{
    QModelIndex index = indexAt(event->pos());
    QRect rect = visualRect(index);
    qDebug() << rect;
}

现在您应该拥有相对于父小部件的项目位置。然后,您应该获取该项目中图像的位置并计算相对于 MainWindow 的位置。

其中一些可以提供帮助

QPoint mapToParent ( const QPoint & pos ) const

QPoint mapFromParent ( const QPoint & pos ) const

于 2013-09-26T08:31:13.357 回答