2013-04-30 56 views
0

簡單,我想在一個簡單的Qt GUI應用程序來顯示圖像。 我有這樣的代碼:Qt的標籤:: setPixmap不工作

ui->label_2->setVisible(true); 
QPixmap supremect(":/images/supremecourt.jpg"); 
ui->label_2->setPixmap(supremect); 
if(supremect.isNull()) 
{ 
    QMessageBox err(this); 
    err.setText("File null"); 
    err.exec(); 
} 
building=SPCT; // A flag 
ui->label_2->show(); 

它編譯完美,但是當我運行它,什麼也不顯示。我確信圖像存在於資源中,所以我做錯了什麼?

編輯:轉換爲PNG沒有幫助

+0

難道是你錯過了jpeg庫嗎? – PurpleAlien 2013-04-30 22:17:15

+0

標籤的父項是否可見?如果父母被隱藏,則孩子將保持隱藏狀態。 – cgmb 2013-04-30 22:17:27

+0

不錯,功能也使得一些按鈕可見 – theunamedguy 2013-04-30 22:18:19

回答

0

嘗試

QPixmap p; 
QString str = ":/images/supremecourt.jpg"; 
bool retVal = p.load(str); 
if(retVal == false) 
{ 
    qDebug() << "Failed to load image!"; 
    foreach(const QByteArray &fmt, QImageReader::supportedImageFormats()) 
    { 
     qDebug() << QString(fmt); 
     // if this doesn't list jpeg then you don't have 
     // the plugin in your imageformats folder. 
    } 

    if(!QFile::exists(str)) 
    { 
     qDebug() << "File" << str << "doesn't exist!"; 
    } 
} 

http://qt-project.org/doc/qt-4.8/qpixmap.html#load

http://qt-project.org/doc/qt-4.8/qfile.html#exists

如果沒有加載,那麼你的程序可能無法訪問到正確的插件或文件不存在你認爲它的地方。

爲JPEG插件DLL被稱爲qjpeg4.dll並應在./imageformats/

希望有所幫助。

+0

我在Linux上,順便說一句 – theunamedguy 2013-05-01 23:48:26

0
  1. 從一些IDE(Qt Creator)運行它並檢查日誌。幾乎可以肯定的是,在那裏顯示了一些錯誤消息。

  2. 確保JPG插件加載。

  3. 確保別的東西不改變標籤的內容(例如的setText將清除像素圖)

+0

PNG不工作,要麼 – theunamedguy 2013-05-01 23:49:11

0

你的圖像添加(:/images/supremecourt.jpg)到resource file正確?如果你不是,請看this。你能發佈你的資源文件的結構嗎?

+0

我測試了已經存在的文件,並檢查如果圖像ISNULL() – theunamedguy 2013-05-02 00:01:07