添加表单后,QGraphicsScene保持空白

时间:2015-02-11 22:08:28

标签: qt

我想在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();
}

1 个答案:

答案 0 :(得分:0)

QGraphicsScene sceneMainWindow构造函数的局部变量。构造函数结束后,变量将被销毁,这会在视图尝试访问场景时导致未定义的行为。你的程序可能会崩溃。

使其成为MainWindow类的成员变量,并在构造函数中使用new进行初始化。或者至少尝试QGraphicsScene *scene = new QGraphicsScene(0,0,800,600,this),当MainWindow被销毁时,它会被Qt删除。