Qt QGraphicscence在添加表单后保持空白

Qt QGraphicscence在添加表单后保持空白,qt,Qt,我想在QMainWindow上绘图:到目前为止,我已经设置了一个简单的项目,并在构造函数中输入了一些代码。QGraphicsView显示一个空白画布。我还需要做什么才能使我的图形可见 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QGraphicsScene scene(0,0,800,60

我想在QMainWindow上绘图:到目前为止,我已经设置了一个简单的项目,并在构造函数中输入了一些代码。QGraphicsView显示一个空白画布。我还需要做什么才能使我的图形可见

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QGraphicsScene scene(0,0,800,600);
    this->view.setScene(&scene);
    this->setCentralWidget(&view);
    scene.addText("Hello, world!");
    QPen pen(Qt::green);
    scene.addLine(0,0,200,200,pen);
    scene.addEllipse(400,300,100,100,pen);
    //make a point:
    double rad = 1;
    scene.addEllipse(10-rad, 10-rad, rad*2.0, rad*2.0,pen,QBrush(Qt::SolidPattern));
    scene.update();
    view.show();
}

qgraphicscene场景
main窗口
构造函数的局部变量。一旦构造函数结束,变量将被销毁,这将导致视图尝试访问场景时出现未定义的行为。你的程序可能会崩溃


使其成为
main窗口
类的成员变量,并在构造函数中使用
new
进行初始化。或者至少尝试一下
qgraphicscene*scene=newqgraphicscene(0,0800600,this)
,当
main窗口
被破坏时,它将被Qt删除。

oouch。我以为在我将场景添加到视图中后,它将保持活动状态。指向它的指针将在您经过它后保持不变,但实际对象将被销毁。Qt不能覆盖自动变量的C++内存管理。