我想在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();
}
答案 0 :(得分:0)
QGraphicsScene scene
是MainWindow
构造函数的局部变量。构造函数结束后,变量将被销毁,这会在视图尝试访问场景时导致未定义的行为。你的程序可能会崩溃。
使其成为MainWindow
类的成员变量,并在构造函数中使用new
进行初始化。或者至少尝试QGraphicsScene *scene = new QGraphicsScene(0,0,800,600,this)
,当MainWindow
被销毁时,它会被Qt删除。