无法在Qt中显示图形场景

时间:2014-07-03 10:00:09

标签: c++ qt qwidget qgraphicsscene

我正在Qt小部件应用程序中创建一个图形场景。应用程序成功运行但未显示任何图形场景。

我用来创建场景的代码是:

cadviewer::cadviewer(QGraphicsScene *parent) :
QGraphicsScene(parent)
{
QGraphicsScene scene;
scene.addLine(10,10,20,20);
QGraphicsView view(&scene);

view.show();
qDebug() << "cadviewer";
} 

对上述课程的调用是在另一个课程中进行的。相同的代码是:

graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer;
qDebug() << "graphicsarea";
}

这两个类中使用的qDebug正在运行。

我无法弄清楚失踪的是什么。请教我如何在主窗口中显示图形场景?

2 个答案:

答案 0 :(得分:0)

我不会重复棘轮怪物告诉你的事情。克服此问题的解决方案之一就是在类属性中添加QGraphicsScene scene;QGraphicsView view;

这样,在构造函数的末尾,它们仍然存活并显示出来!

答案 1 :(得分:0)

您在构造函数中只声明了一个局部变量。 程序离开构造函数后,您的“cadviewer viewer”将被删除。

graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer; //delete after constructor
qDebug() << "graphicsarea";
}

尝试将其用作类属性/成员。当应用程序离开构造函数时,类成员仍然存活。

<强>更新

以下是如何将图形加入该区域的一个小例子:

QLayout* testLayout = new QVBoxLayout();
cadviewer* view = new cadviewer();
layout->addWidget(view);
graphicsarea* area = new graphicsarea();
area->setLayout(testLayout);
area->show();

其他布局也是可能的。