Đây là mã của tôi:Qt Graphics View, hiển thị hình ảnh! , 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();
}
}
Tôi muốn hiển thị hình ảnh từ tập tin, mã hoạt động tốt nhưng disappiars hình ảnh rất nhanh.
Làm cách nào để tạm dừng màn hình hình ảnh?
Và làm cách nào tôi có thể tải hình ảnh trong tiện ích "graphicsView"?
Mã của tôi:
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();
}
}
Nó không làm việc.
Cách sửa lỗi này?
Và cách tránh rò rỉ bộ nhớ? : =) Tôi phải giải phóng bộ nhớ đúng ¿? :) –
Có, bạn sẽ cần phải dọn dẹp bản thân với xóa. Tôi sẽ đề nghị bạn khai báo QGraphicsScene của bạn (và QGraphicsPixmapItem nếu nó không được sao chép trong additem) như là một biến con trỏ lớp. Và sau đó tôi khuyên bạn nên sử dụng một số loại con trỏ thông minh khi bạn khai báo biến, ví dụ: QSharedPointer: QSharedPointer ptr_scene; this-> ptr_scene = QSharedPointer (mới QGraphicsScene()) Sau đó, bộ nhớ được quản lý khi MainWindow bị đóng. –
thomas