我有一些代码,用于显示名称为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);
}
答案 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);
}