これが私のコードです:
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* scene = new QGraphicsScene();
QGraphicsView* view = new QGraphicsView(scene);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene->addItem(item);
view->show();
2番目の質問は関連している可能性があります-scene
はui->graphicsView
に割り当てられていますが、すぐに削除されるため、ヒープ上にすべてのオブジェクトを再度作成します。
QGraphicsViewに固執する必要がない場合、1つの可能性は代わりにQLabelを使用することです。 QGraphicsViewでそれを解決できませんでした...
QString filename = "X:/my_image";
QImage image(filename);
ui->label->setPixmap(QPixmap::fromImage(image));