2012-09-18 151 views
1

我從我的設計類調用這個後來將它們添加到佈局,但我總是與功能ladeBild(QLabel l, QString s)沒有匹配函數來調用到

void Levels::erzeugen(Levels *) 
{ 
.... 

    ladeBild(l01,"l01.png"); 
    ladeBild(l02,"l02.png"); 
    ladeBild(l03,"l03.png"); 
    ladeBild(l04,"l04.png"); 
    ladeBild(l05,"l05.png"); 
    ladeBild(l06,"l06.png"); 
    ladeBild(l07,"l07.png"); 
    ladeBild(l08,"l08.png"); 
    ladeBild(l09,"l09.png"); 
    ladeBild(l10,"l10.png"); 
    ladeBild(l11,"l11.png"); 
    ladeBild(l12,"l12.png"); 
... 
} 

    void Levels::ladeBild(QLabel l,QString s) 
{ 

    l = new QLabel(); 
    l.setBackgroundRole(QPalette::Dark); 
    l.setAutoFillBackground(true); 
    image = new QImage(s);//Muss im debug-Ordner sein!!! 
    l.setPixmap(QPixmap::fromImage(*image)); 
    l.setMaximumHeight(image->height()); 
    l.setMaximumWidth(image->width()); 

} 

錯誤消息,並且我收到以下錯誤消息(每次調用ladeBild

In member function 'void Levels::erzeugen(Levels*)': Fehler:no 
matching function for call to 'Levels::ladeBild(QLabel*&, const char 
[8])' candidates are: void Levels::ladeBild(QLabel, QString) Fehler:no 
match for 'operator=' in 'l = (QFlags<Qt::WindowType>(0u), (operator 
new(20u), (<statement>, ((QLabel*)<anonymous>))))' candidates are: 
QLabel& QLabel::operator=(const QLabel&)` 

不能修復這個問題...

+1

'l = new QLabel();' - 您試圖在這裏爲'QLabel'指定'QLabel *'。 – chris

+0

請儘可能將代碼複製/粘貼到您的問題中 - 對於您發佈的內容,您應該也會在chris評論的線上發現錯誤。 –

回答

2

Levels::ladeBild預計QLabel,但它應該是QLabel*

+0

根本不起作用,甚至更多的錯誤 – user1658035

+0

'QLabel'像所有'QObject'派生的實例一樣應該在堆上創建,所以方法簽名應該接受一個指針,尤其是考慮到你聲明瞭一個'QLabel'堆並嘗試分配它 - 我的答案是正確的。然而,如果你看到更多的錯誤,那是因爲編譯器正在進一步深入你的代碼並揭示更多的問題。 – cmannett85