2012-08-10 72 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 

在你的版本,是在栈上创建的场景,所以如果你在课堂上把这个代码的任何地方,现场将立即在函数的结尾死去。这就是为什么它是白色的。如果您将它分配到堆上,它将在右括号后保持活动状态,并且您将能够看到它。

请不要忘记删除它后!

相关问题