如何在QPixmap中加载图像以在QLabel中显示它

时间:2014-02-12 15:30:43

标签: image qt qpixmap qlabel

我已经阅读了多篇文章,它仍然无法正常工作!!

我知道我做得对,但由于某种原因它无法正常工作。

这是我的代码:

myIcon = new QLabel();
    QPixmap myPixmapForNow;
    if(!myPixmapForNow.load(":/img/Interrogation.png")){
        qWarning("Failed to load");
    }
    myIcon->setPixmap(myPixmapForNow);

它告诉我每次都无法加载文件。

我想要做的是显示一个具有工具提示的图像,并解释它旁边的按钮的作用。基本上,我正在寻找一种方法来显示一个带有工具提示的图像。

我是初学者,老实说,查看文件夹的概念对我来说有点抽象。如果您有博客或建议的东西,我会愿意阅读它。我一直在寻找一个,我找不到任何一个解释这个概念以及如何去做的好事。

如果您有解决方案,请解释一下。没有比解释更好的了:))

由于

2 个答案:

答案 0 :(得分:1)

要做的两件事:

  1. 检查QFile是否可以打开该资源并阅读它。将其转储到磁盘上的文件中。

    QFile fi(":/img/Interrogation.png");
    QFile fo(QDir::homePath() + QDir::separator() + "Interrogation.png");
    if (!fi.open(QIODevice::ReadOnly)) {
      qWarning() << "Can't open the resource" << fi.fileName();
      return;
    }
    if (!fo.open(QIODevice::WriteOnly)) {
      qWarning() << "Can't open the output" << fo.fileName();
      return;
    }
    fo.write(fi.readAll());
    
  2. 检查转储到磁盘的格式,确保它是一个有效的png文件。例如,您可以在图像编辑器中打开它 - 只需确保扩展程序与内容一致即可。扩展名为.png的有效JPEG文件无法加载。

答案 1 :(得分:0)

似乎,我已经复制了你的错误。可能您错过了QtCreator通常设置为"/new/prefix1/"的默认资源前缀。由于访问资源,此字符串前缀必须存在。尝试按以下方式修改代码:

if(!myPixmapForNow.load(":/new/prefix1/img/Interrogation.png")){

或者,您需要发现您的资源文件以找出正确的前缀字符串。如果您已经修改了前缀字符串,则相应地修改您的代码。