SIGSEGV when using inherited QGraphicsScene












0















I'm trying to inherit from a QGraphicsScene but somehow that crashes my program when I try to use it. I guess somewhere I'm missing a small thing, but I couldn't figure it out. Here is a minimal example of what I tried so far:



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);
}


As soon as I call the setScene(m_scene) function, the program crashes with a SIGSEGV.










share|improve this question



























    0















    I'm trying to inherit from a QGraphicsScene but somehow that crashes my program when I try to use it. I guess somewhere I'm missing a small thing, but I couldn't figure it out. Here is a minimal example of what I tried so far:



    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);
    }


    As soon as I call the setScene(m_scene) function, the program crashes with a SIGSEGV.










    share|improve this question

























      0












      0








      0








      I'm trying to inherit from a QGraphicsScene but somehow that crashes my program when I try to use it. I guess somewhere I'm missing a small thing, but I couldn't figure it out. Here is a minimal example of what I tried so far:



      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);
      }


      As soon as I call the setScene(m_scene) function, the program crashes with a SIGSEGV.










      share|improve this question














      I'm trying to inherit from a QGraphicsScene but somehow that crashes my program when I try to use it. I guess somewhere I'm missing a small thing, but I couldn't figure it out. Here is a minimal example of what I tried so far:



      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);
      }


      As soon as I call the setScene(m_scene) function, the program crashes with a SIGSEGV.







      c++ qt inheritance qwidget qgraphicsscene






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 3 at 7:49









      Tom MekkenTom Mekken

      735824




      735824
























          1 Answer
          1






          active

          oldest

          votes


















          0














          If you use the UI file, you need to first call setupUi() before using it, otherwise the UI elements are not initialized. See docs: http://doc.qt.io/qt-5/designer-using-a-ui-file.html



          Add



           ui->setupUi(this); 


          to your MainWindow constructor.






          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54018283%2fsigsegv-when-using-inherited-qgraphicsscene%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            If you use the UI file, you need to first call setupUi() before using it, otherwise the UI elements are not initialized. See docs: http://doc.qt.io/qt-5/designer-using-a-ui-file.html



            Add



             ui->setupUi(this); 


            to your MainWindow constructor.






            share|improve this answer




























              0














              If you use the UI file, you need to first call setupUi() before using it, otherwise the UI elements are not initialized. See docs: http://doc.qt.io/qt-5/designer-using-a-ui-file.html



              Add



               ui->setupUi(this); 


              to your MainWindow constructor.






              share|improve this answer


























                0












                0








                0







                If you use the UI file, you need to first call setupUi() before using it, otherwise the UI elements are not initialized. See docs: http://doc.qt.io/qt-5/designer-using-a-ui-file.html



                Add



                 ui->setupUi(this); 


                to your MainWindow constructor.






                share|improve this answer













                If you use the UI file, you need to first call setupUi() before using it, otherwise the UI elements are not initialized. See docs: http://doc.qt.io/qt-5/designer-using-a-ui-file.html



                Add



                 ui->setupUi(this); 


                to your MainWindow constructor.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 3 at 8:47









                llllllllllllllllllll

                13.8k41742




                13.8k41742
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54018283%2fsigsegv-when-using-inherited-qgraphicsscene%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Mossoró

                    Error while reading .h5 file using the rhdf5 package in R

                    Pushsharp Apns notification error: 'InvalidToken'