我正在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正在运行。
我无法弄清楚失踪的是什么。请教我如何在主窗口中显示图形场景?
答案 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();
其他布局也是可能的。