在 QListWidget 中显示大图

Display big image in QListWidget

我想用QListWidget来显示大图,例如3508×4961像素大小,每个列表项显示一张图片。图像设置在 Qlabel 中,Qlabel 通过 setItemWidget() 设置到 QListWidgetItem 中。当我的程序是运行时,列表项无法显示整个图像,因为图像太大了。它只显示图像的上半部分。当我向下滚动时,列表项立即更改为下一张图像,而不是逐渐显示当前图像的下部。有谁知道如何通过滚动显示每个图像的下部?

这是我的代码,

    QImage *image = new QImage("/home/sk/image1.png");
    QLabel *label = new QLabel;
    label->setPixmap(QPixmap(QPixmap::fromImage(*image)));
    QListWidgetItem *ite = new QListWidgetItem;
    auto size = label->sizeHint();
    ite->setSizeHint(label->sizeHint());
    size = ite->sizeHint();
    ui->listWidget->addItem(ite);
    ui->listWidget->setItemWidget(ite, label);

    image = new QImage("/home/sk/image2.png");
    label = new QLabel;
    label->setPixmap(QPixmap(QPixmap::fromImage(*image)));
    ite = new QListWidgetItem;
    ite->setSizeHint(label->sizeHint());
    ui->listWidget->addItem(ite);
    ui->listWidget->setItemWidget(ite, label);

    image = new QImage("/home/sk/image3.png");
    label = new QLabel;
    label->setPixmap(QPixmap(QPixmap::fromImage(*image)));
    ite = new QListWidgetItem;
    ite->setSizeHint(label->sizeHint());
    ui->listWidget->addItem(ite);
    ui->listWidget->setItemWidget(ite, label);

您是否尝试过将 scroll mode 更改为 ScrollPerPixel

setVerticalScrollMode

setHorizo​​ntalScrollMode

    ui->listWidget->setVerticalScrollMode(QListWidget::ScrollPerPixel);

为了改变滚动步长

    ui->listWidget->verticalScrollBar()->setSingleStep(10);
    ui->listWidget->verticalScrollBar()->setPageStep(20);

这些值将用于滚动