2014-07-17 4 views
1

내 프로그램에 애니메이션 GIF를 넣으려고합니다. 'QLabel :: QLabel (는 QWidget *, Qt는 : 나는 올바른 구문오류 C2664 : 'App * const'to 'QWidget *'

void TestApp::draw() 
{ 
//this code and other drawing code here 
} 

에서

QMovie *hit1=new QMovie("BadExplosion.gif"); 
QLabel *processLabel=new QLabel(this); 
processLabel->setMovie(hit1); 
hit1->start(); 

를 수행 할 때

그러나, 나는 오류

오류 C2664로 실행 :: WindowFlags) ': 매개 변수 1을'TestApp * const '에서 줄의'QWidget * '으로 변환 할 수 없습니다.

QLabel *processLabel=new QLabel(this); 

아이디어가 있으십니까? 감사!

EDIT : TestApp는 맞춤 클래스입니다.

+0

'TestApp'란 무엇입니까? 커스텀 클래스? 아니면 다른 것으로부터 파생됩니까? – JBL

+0

TestApp가 무엇인지 편집했습니다. – Chromelon

답변

1

TestApp이 맞춤 클래스 인 경우이 코드가 작동하지 않는 것이 정상입니다.

Qt의 모든 UI 요소는 구성시 매개 변수를 취할 수 있습니다.이 매개 변수는 부모 역할을하는 QWidget입니다. 이 학부모는 자녀의 삭제를 처리 할 책임이 있습니다. 이에 대한 자세한 내용은 Qt 문서 (QWidget constructor에 대한 문서)를 참조하십시오.

귀하의 경우, this을 QLabel 생성자에 전달하면 안됩니다. 이 QLabel 상위가 될 다른 위젯을 전달해야합니다.

컴파일러는 사용자가 가지고있는 메시지와 함께이 문제를 명확하게 보여줍니다. QWidget을 기다리지 만 클래스를 가져 왔습니다 (어느 시점에서든 QWidget을 상속받지 않음).