2012-08-10 65 views
2

我試圖在我的Qt應用程序中使用QGraphicsViewQGraphicsScene但由於某種原因,我無法讓它工作。我有以下的代碼,如果我從main類與控制器類繼承QObject執行,但不將工作:代碼在主要工作,但沒有在其他類

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

如果我在main做現場是藍色的,但如果我這樣做的其他班的場面是白色的。到底是怎麼回事?

+1

首先,這段代碼不會編譯爲'view'是一個指針,但是您使用'.'來訪問成員。 – 2012-08-10 10:58:08

回答

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 

在你的版本,是在棧上創建的場景,所以如果你在課堂上把這個代碼的任何地方,現場將立即在函數的結尾死去。這就是爲什麼它是白色的。如果您將它分配到堆上,它將在右括號後保持活動狀態,並且您將能夠看到它。

請不要忘記刪除它後!

相關問題