2012-09-18 109 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