Voici mon code:Qt Graphics Voir, montrer l'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();
}
}
Je veux afficher l'image du fichier, le code fonctionne très bien, mais l'image disappiars très rapide.
Comment mettre l'image en pause? Et comment est-ce que je peux charger l'image dans le widget "graphicsView"?
Mon code:
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();
}
}
Il ne fonctionne pas.
Comment résoudre ce problème?
Et comment éviter fuite de mémoire? : =) Je dois libérer la mémoire droite? :) –
Oui, vous devrez nettoyer vous-même avec supprimer. Je suggère que vous déclariez votre QGraphicsScene (et QGraphicsPixmapItem s'il n'est pas copié pendant additem) en tant que variable de pointeur de classe. Et je suggère alors que vous utilisiez une sorte de pointeur intelligent lorsque vous déclarez la variable par ex. QSharedPointer: QSharedPointer ptr_scene; this-> ptr_scene = QSharedPointer (nouveau QGraphicsScene()) Ensuite, la mémoire est gérée lorsque MainWindow est fermé. –
thomas