Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法在Qt中显示图形场景_C++_Qt_Qwidget_Qgraphicsscene - Fatal编程技术网

C++ 无法在Qt中显示图形场景

C++ 无法在Qt中显示图形场景,c++,qt,qwidget,qgraphicsscene,C++,Qt,Qwidget,Qgraphicsscene,我正在Qt widgets应用程序中创建一个图形场景。应用程序已成功运行,但未显示任何图形场景 我用于创建场景的代码是: cadviewer::cadviewer(QGraphicsScene *parent) : QGraphicsScene(parent) { QGraphicsScene scene; scene.addLine(10,10,20,20); QGraphicsView view(&scene); view.show(); qDebug() << "ca

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

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

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正在工作


我不知道少了什么。请帮助我如何在主窗口中显示图形场景?

我不会重复ratchet freak告诉您的内容。解决这个问题的方法之一就是添加Qgraphicscene场景;和QGraphicsView视图;在类属性中


这样,在构造器结束时,它们仍将处于活动状态并显示

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

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

其他布局也是可能的。

退出cadviewer构造函数时,您正在删除QGraphicscene,而当您离开graphicsarea构造函数时,QGraphicscene也会被删除,创建还不够,需要将其添加到图形ReadoEsn创建不意味着它会添加到场景中吗?如果没有,如何将其添加到graphicsarea?可以将GraphicsScene添加到布局,并将此布局添加到区域。我更新我的答案。
QLayout* testLayout = new QVBoxLayout();
cadviewer* view = new cadviewer();
layout->addWidget(view);
graphicsarea* area = new graphicsarea();
area->setLayout(testLayout);
area->show();