我正在尝试从QGraphicsScene继承,但是以某种方式使我的程序崩溃时,我会尝试使用它。我想我在某个地方缺少一件小东西,但我无法弄清楚。这是到目前为止我尝试过的最小示例:
myscene.h
#ifndef MYSCENE_H
#define MYSCENE_H
#include <QGraphicsScene>
class MyScene : public QGraphicsScene
{
Q_OBJECT
QPen* pen_bg;
public:
explicit MyScene(QObject* parent=nullptr);
~MyScene();
};
#endif // MYSCENE_H
myscene.cpp
#include "myscene.h"
MyScene::MyScene(QObject* parent):
QGraphicsScene (parent)
{
pen_bg = new QPen(Qt::blue);
}
MyScene::~MyScene()
{
delete pen_bg;
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myscene.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
MyScene *m_scene = new MyScene(this);
ui->graphicView->setScene(m_scene);
}
一旦我调用setScene(m_scene)
函数,程序就会因SIGSEGV崩溃。
答案 0 :(得分:0)
如果使用UI文件,则需要先调用setupUi()
,然后再使用它,否则UI元素不会初始化。查看文档:{{3}}
添加
ui->setupUi(this);
到您的MainWindow
构造函数。