在doubleClick上获取QListView图标的几何图形以进行动画制作

时间:2013-09-26 07:49:10

标签: qt

我有一个使用iconMode中的QListView的photobrowser。当双击照片缩略图时,我会显示一个带有完整尺寸图像的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();
}

enter image description here

1 个答案:

答案 0 :(得分: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