我正在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正在工作。
我不知道少了什么。请告诉我如何在主窗口中显示图形场景?
我不会重复棘轮怪物告诉你的话。克服这个问题的解决方案之一就是在类属性中添加QGraphicsScene scene;
和QGraphicsView view;
。
这样,在构造函数结束时,它们仍然是活动的并显示出来!
在构造函数中只声明了一个局部变量。在程序离开构造函数后,你的"cadviewer查看器"将被删除。
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();