2012-08-10 3 views
2

QGraphicsViewQGraphicsScene을 Qt 애플리케이션에 사용하려고하는데 어떤 이유로 작동하지 않습니다. 나는 QObject을 상속하는 컨트롤러 클래스에서 main 클래스에서 실행하지만 경우에 작동하는 다음과 같은 코드를 가지고 : 나는 main에 그것을 할 경우코드가 주에서 작동하지만 다른 클래스에서는 작동하지 않습니다

QGraphicsScene scene; 
scene.setSceneRect(0,0,200,200); 
scene.setBackgroundBrush(Qt::blue); 
QGraphicsView *view = new QGraphicsView(); 
view->setScene(&scene); 
view->show(); 

장면이 파란색하지만 난 그것을 할 경우 다른 클래스 장면은 흰색입니다. 무슨 일 이니? 이것에

+1

시작하려면,이 코드는'view'가 포인터이기 때문에 컴파일되지 않지만'.'을 사용하여 멤버에 액세스합니다. –

답변

4

변경 : 당신이 수업 시간에 어느 곳이 코드를 넣어 경우, 장면이 함수의 말에 즉시 죽을 귀하의 버전에서

{ 
QGraphicsScene * scene = new QGraphicsScene();//note that we allocate it on the heap 
scene->setSceneRect(0,0,200,200); 
scene->setBackgroundBrush(Qt::blue); 
QGraphicsView *view = new QGraphicsView(); 
view->setScene(scene); 
view->show(); 
<...> 
}//your function ends here 

이 장면은, 스택에 생성됩니다. 그것이 흰색 인 이유입니다. 힙에 할당하면 닫기 괄호 뒤에 활성 상태로 유지되고 볼 수 있습니다.

후 삭제하는 것을 잊지 마세요!

관련 문제