Aquí está mi código:Qt Graphics View, show image! , Widget
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 una imagen de archivo, el código funciona bien, pero disappiars imagen muy rápido.
¿Cómo puedo pausar la pantalla de imagen?
¿Y cómo puedo cargar la imagen 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 solucionar esto?
Y cómo evitar la pérdida de memoria? : =) Tengo que liberar memoria ¿verdad? :) –
Sí, tendrás que limpiarte con delete. Le sugiero que declare su QGraphicsScene (y QGraphicsPixmapItem si no se copia durante el additem) como una variable de puntero de clase. Y le sugiero que utilice algún tipo de puntero inteligente cuando declare la variable, p. QSharedPointer: QSharedPointer ptr_scene; this-> ptr_scene = QSharedPointer (new QGraphicsScene()) Luego, la memoria se administra cuando MainWindow se cierra. –
thomas