Ecco il mio codice:Qt Graphics Visualizza, mostra l'immagine! , 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();
}
}
voglio visualizzare immagini da file, il codice funziona bene, ma immagine disappiars molto veloce.
Come posso mettere in pausa lo schermo dell'immagine?
E come posso caricare l'immagine nel widget "graphicsView"?
Il mio codice:
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();
}
}
Non funziona.
Come risolvere il problema?
E come evitare la perdita di memoria? : =) Devo rilasciare la memoria giusto ¿? :) –
Sì, è necessario pulirsi da soli con l'eliminazione. Ti suggerirei di dichiarare il tuo QGraphicsScene (e QGraphicsPixmapItem se non viene copiato durante l'additem) come variabile del puntatore di classe. E quindi suggerirei di utilizzare una sorta di puntatore intelligente quando dichiari la variabile, ad es. QSharedPointer: QSharedPointer ptr_scene; this-> ptr_scene = QSharedPointer (nuovo QGraphicsScene()) Quindi la memoria viene gestita quando la finestra principale è chiusa. –
thomas