2014-02-12 25 views
1

我已閱讀過多篇文章,但它仍然無效!如何在QPixmap中加載圖像以將其顯示在QLabel中

我知道我做得對,但由於某種原因,它並不奏效。

這裏是我的代碼:

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

它告訴我,該文件未能每次加載。

我想要做的是顯示一個圖像,它將提供一個工具提示並解釋它旁邊的按鈕的功能。 Basicaly,我正在尋找一種方式來顯示圖像,其中有一個工具提示程序。

我是一名初學者,老實說,查找文件夾的概念對我來說有點抽象。如果您有博客或要提出的內容,我會樂意閱讀。我一直在尋找一個,我還沒有找到任何解釋這個概念以及如何去做的好方法。

如果你有我的問題的解決方案,請解釋它。沒有什麼比解釋:)更好

感謝

回答

0

兩件事要做:

  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文件將無法加載。

0

似乎,我已經複製了你的錯誤。很可能,您錯過了QtCreator通常設置爲"/new/prefix1/"的默認資源前綴。由於訪問資源,此字符串前綴必須存在。嘗試使用以下方式修改代碼:

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

或者,您需要發現您的資源文件以找出正確的前綴字符串。如果您已經修改了前綴字符串,請相應地修改您的代碼。

相關問題