ここに私のコードはあります:Qt Graphics View、画像を表示! 、ウィジェット
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();
}
}
ファイルから画像を表示したい、コードは正常に動作しますが、画像は非常に速く消えます。
イメージスクリーンを一時停止するには?
そして、 "graphicsView"ウィジェットでイメージを読み込むにはどうすればいいですか?
マイコード:
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();
}
}
動作しません。
これを修正するには?
そして、どのようにメモリリークを避ける? :=)私は右のメモリを解放する必要がありますか? :) –
はい、削除であなた自身をきれいにする必要があります。私はクラスポインタ変数としてQGraphicsScene(および追加項目の間にコピーされない場合はQGraphicsPixmapItem)を宣言することをお勧めします。そして、変数を宣言するときにスマートポインタを使用することをお勧めします。 QSharedPointer: <クラスヘッダ内> QSharedPointer ptr_scene; <ソースファイル内> this-> ptr_scene = QSharedPointer (新しいQGraphicsScene()) MainWindowを閉じるとメモリが管理されます。 –
thomas