QImage似乎根本没有加载任何图像(总是返回null)?

问题描述:

我在Windows7上并使用Qt SDK 4.8。 试图读取与QImage中的文件,但它似乎并没有加载。也就是说,QImage(文件名)或QImage(文件名,“PNG”)或QImage.load(文件名)总是返回NULL。QImage似乎根本没有加载任何图像(总是返回null)?

这里是我的代码:

void MainWindow::on_actionOpen_triggered() 
{ 
    QString fileName = QFileDialog::getOpenFileName(this, 
                tr("Open Image"), 
                QDir::homePath(), 
                tr("Image Files (*.png *.tga *.bmp)")); 

    if (!fileName.isEmpty()) 
    { 
     targetImage = new QImage(fileName, "PNG"); 
     if(targetImage->isNull()) 
     { 
      QMessageBox::information(this, 
            tr("PhotoChop"), 
            tr("Cannot load %1.").arg(fileName)); 
      return; 
     } 

     onScreenImage.setBackgroundRole(QPalette::Base); 
     onScreenImage.setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); 
     onScreenImage.setScaledContents(true); 
     onScreenImage.setPixmap(QPixmap::fromImage(*targetImage)); 
    } 
} 

我在做什么错?

+0

什么文件名返回?完整路径,相对路径? – Kunal 2012-04-11 10:13:12

+0

fileName返回完整路径。但我甚至尝试过SDK(ImageViewer)的示例,并且该示例中的QImage执行完全相同的操作,也就是它也不加载图像(也返回完整路径)。我已经尝试了几个不同的图像 – SaldaVonSchwartz 2012-04-11 10:21:38

+0

您是否尝试过其他格式?我在PNG和Qt方面遇到了麻烦,因为我的(Linux)系统有更新版本的PNG库,并且无法使用它。我认为它需要v1.2。 – cmannett85 2012-04-11 11:59:14

它与QImage如何加载用于读取文件的“插件”有关。一种选择是启用这些插件(针对不同的文件格式),然后与它们进行链接。

虽然我只是使用Gdiplus :: Bitmap(从windows)加载文件,然后从中创建了一个QPixmap可以使用的HBITMAP。