image qt graphics view qgraphicsview

Qt Graphics View, muestra la imagen!,Widget



qgraphicsview (2)

Aquí está mi código:

void MainWindow::on_actionOpen_Image_triggered() { QString fileName = QFileDialog::getOpenFileName(this,"Open Image File",QDir::currentPath()); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this,"Image Viewer","Error Displaying image"); return; } QGraphicsScene scene; QGraphicsView view(&scene); QGraphicsPixmapItem item(QPixmap::fromImage(image)); scene.addItem(&item); view.show(); }

}

Quiero mostrar la imagen desde el archivo, el código funciona bien pero desaparece la imagen muy rápido.

¿Cómo puedo pausar la pantalla de imagen?

¿Y cómo puedo cargar imágenes en el widget "graphicsView"?

Mi código:

void MainWindow::on_actionOpen_Image_triggered() { QString fileName = QFileDialog::getOpenFileName(this,"Open Image File",QDir::currentPath()); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this,"Image Viewer","Error Displaying image"); return; } QGraphicsScene scene; QGraphicsPixmapItem item(QPixmap::fromImage(image)); scene.addItem(&item); ui->graphicsView->setScene(&scene); ui->graphicsView->show(); } }

No funciona.

¿Cómo arreglar esto?


Debe crear todos sus objetos en el montón, de lo contrario se eliminarán cuando salgan del alcance:

QGraphicsScene* scene = new QGraphicsScene(); QGraphicsView* view = new QGraphicsView(scene); QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image)); scene->addItem(item); view->show();

Su segunda pregunta podría estar relacionada: la scene está asignada a ui->graphicsView pero se elimina inmediatamente después, así que vuelva a crear todos sus objetos en el montón.


Si no tiene que quedarse con QGraphicsView, una posibilidad es usar QLabel en su lugar. No logré resolverlo para QGraphicsView ...

QString filename = "X:/my_image"; QImage image(filename); ui->label->setPixmap(QPixmap::fromImage(image));