-1

I have code that displays an image with its name on listWidget. In that case the image won't fit in the graphics view. I tested some of resizing methods. But the images won't resize.

How can I resize images to fit in? Please take a look my code.

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);
}
petezurich
  • 9,280
  • 9
  • 43
  • 57
Zin Oo
  • 5
  • 7

1 Answers1

0

I use QLabel instead of 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);
}
Zin Oo
  • 5
  • 7