如何调整图像大小以适合图形视图

时间:2018-07-16 06:28:29

标签: qt qgraphicsview qgraphicsscene

我有一些代码,用于显示名称为listWidget的图像。在这种情况下,图像将无法显示在图形视图中。我测试了一些调整大小的方法。但是图像不会调整大小。

如何调整图像大小以适合?请看一下我的代码。

directory.setNameFilters({"*.png", "*.jpg"});

for(const QFileInfo & finfo: directory.entryInfoList()){
    auto imageObject = new QImage();
    imageObject->load(finfo.absoluteFilePath());

    auto image = QPixmap::fromImage(*imageObject);

    QGraphicsScene *scene = new QGraphicsScene(this);

    scene->addPixmap(image);
    //scene->setSceneRect(image.rect());
    QGraphicsView *graphicsView = new QGraphicsView(scene);
    graphicsView->fitInView(scene->sceneRect(),Qt::KeepAspectRatio);

    auto item = new QListWidgetItem("", ui->listWidget_main);
    auto    widget = new QWidget;
    auto    label = new QLabel(finfo.fileName());
    auto    vb = new QVBoxLayout;

    vb->addWidget(label);
    vb->addWidget(graphicsView);

    widget->setLayout(vb);
    widget->setMinimumSize(340,340);
    ui->listWidget_main->setItemWidget(item,widget);
}

1 个答案:

答案 0 :(得分:0)

我使用QLabel而不是QGraphicsView

directory.setNameFilters({"*.png", "*.jpg"});

    for(const QFileInfo & finfo: directory.entryInfoList()){

        QPixmap image(finfo.absoluteFilePath());
        auto imageLabel = new QLabel();
        imageLabel->setMinimumSize(320,320);
        imageLabel->setScaledContents(true);
        imageLabel->setPixmap(image);



        auto    item = new QListWidgetItem("",listWidget_main);
        auto    widget = new QWidget;
        auto    label = new QLabel(finfo.fileName());
        auto    vb = new QVBoxLayout;

        vb->addWidget(label);
        vb->addWidget(imageLabel);

        widget->setLayout(vb);
        widget->setMinimumSize(340,340);
        listWidget_main->setItemWidget(item,widget);
}