我试图在我的 Qt 应用程序中使用 QGraphicsView
和 QGraphicsScene
但由于某些原因我无法让它工作。我有以下代码,如果我从 main
类而不是从继承 QObject
的 Controller 类执行它,它将起作用:
QGraphicsScene scene;
scene.setSceneRect(0,0,200,200);
scene.setBackgroundBrush(Qt::blue);
QGraphicsView *view = new QGraphicsView();
view->setScene(&scene);
view->show();
如果我在 main
中这样做,场景是蓝色的,但如果我在另一个类中这样做,场景是白色的。这是怎么回事?
最佳答案
更改为:
{
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
在您的版本中,场景是在堆栈上创建的,因此如果您将此代码放在类中的任何位置,场景将在函数结束时立即消失。这就是为什么它是白色的。如果你在堆上分配它,它会在右括号后保持事件状态,你将能够看到它。
请不要忘记删除!
关于c++ - 代码在 main 中有效,但在其他类中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900237/