Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Program closes too soon
Forum Updated to NodeBB v4.3 + New Features

Program closes too soon

Scheduled Pinned Locked Moved Unsolved General and Desktop
20 Posts 5 Posters 4.1k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D DocDJ
    5 Dec 2016, 13:36

    @sneubert Since it compiled without errors or warnings, I wasn't aware it needed a ui->, but I will try it. Thanks for the tip.

    M Offline
    M Offline
    mrjj
    Lifetime Qt Champion
    wrote on 5 Dec 2016, 13:42 last edited by mrjj 12 May 2016, 13:45
    #7

    @DocDJ

    Hi , you do not need UI but!

    if you just have
    QTextEdit *int1box; in djdialog1.h, you need to allocate a real objects before use. This is just a definition of a pointer.

    // somewhere else
    int1box = new QTextEdit (this);

    You use use Designer then all Widgets u place on a form is available via
    UI->the_name

    Please notice those are only valid after
    setupUi(this);

    D 2 Replies Last reply 5 Dec 2016, 13:48
    1
    • M mrjj
      5 Dec 2016, 13:42

      @DocDJ

      Hi , you do not need UI but!

      if you just have
      QTextEdit *int1box; in djdialog1.h, you need to allocate a real objects before use. This is just a definition of a pointer.

      // somewhere else
      int1box = new QTextEdit (this);

      You use use Designer then all Widgets u place on a form is available via
      UI->the_name

      Please notice those are only valid after
      setupUi(this);

      D Offline
      D Offline
      DocDJ
      wrote on 5 Dec 2016, 13:48 last edited by
      #8

      @jsulm said in program closes too soon:

      @DocDJ To add to @sneubert : did you try to debug? This is the easiest way to find out where the app is crashing.

      Not sure how to proceed with debugging this one, as it gives no clue as to a cause. I assumed that creating the int1box, etc in Designer would create the objects in my header file for my c++ code to use.

      J 2 Replies Last reply 5 Dec 2016, 13:50
      0
      • D DocDJ
        5 Dec 2016, 13:48

        @jsulm said in program closes too soon:

        @DocDJ To add to @sneubert : did you try to debug? This is the easiest way to find out where the app is crashing.

        Not sure how to proceed with debugging this one, as it gives no clue as to a cause. I assumed that creating the int1box, etc in Designer would create the objects in my header file for my c++ code to use.

        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 5 Dec 2016, 13:50 last edited by
        #9

        @DocDJ You said it crashes when your "go" method is called, then put a break point there and debug...

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • D DocDJ
          5 Dec 2016, 13:48

          @jsulm said in program closes too soon:

          @DocDJ To add to @sneubert : did you try to debug? This is the easiest way to find out where the app is crashing.

          Not sure how to proceed with debugging this one, as it gives no clue as to a cause. I assumed that creating the int1box, etc in Designer would create the objects in my header file for my c++ code to use.

          J Offline
          J Offline
          jsulm
          Lifetime Qt Champion
          wrote on 5 Dec 2016, 13:50 last edited by jsulm 12 May 2016, 13:58
          #10

          @DocDJ If you used designer then you should access your UI objects via ui-> , but you don't.
          If you use designer then you do not add any object pointers to your classes by yourself - this is done for you.
          Instances are created when you call setupUi() and then you can access them via ui->objName.

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          1
          • M mrjj
            5 Dec 2016, 13:42

            @DocDJ

            Hi , you do not need UI but!

            if you just have
            QTextEdit *int1box; in djdialog1.h, you need to allocate a real objects before use. This is just a definition of a pointer.

            // somewhere else
            int1box = new QTextEdit (this);

            You use use Designer then all Widgets u place on a form is available via
            UI->the_name

            Please notice those are only valid after
            setupUi(this);

            D Offline
            D Offline
            DocDJ
            wrote on 5 Dec 2016, 14:16 last edited by
            #11

            @mrjj said in program closes too soon:

            @DocDJ

            Hi , you do not need UI but!

            if you just have
            QTextEdit *int1box; in djdialog1.h, you need to allocate a real objects before use. This is just a definition of a pointer.

            // somewhere else
            int1box = new QTextEdit (this);

            You use use Designer then all Widgets u place on a form is available via
            UI->the_name

            Please notice those are only valid after
            setupUi(this);

            In "setupui, this line: answerbox = new QTextEdit(djdialog1); creates the object. Adding Ui-> in front of answerbox causes an error.

            1 Reply Last reply
            0
            • D Offline
              D Offline
              DocDJ
              wrote on 5 Dec 2016, 14:41 last edited by kshegunov 12 Jun 2016, 08:38
              #12

              It would appear that setupUi is not being called. Here is my main.cpp:

              #include <QApplication>
              // following 2 lines are initially here to build the "project"
              //#include <QDialog>
              //#include "ui_djdialog1.h"
              // following line replaces the above 2 lines
              #include "djdialog1.h"
              
              int main(int argc, char *argv[])
              {
                  QApplication app(argc, argv);
                  /** original code before 1st qmake-qt4 my.pro
                  Ui::djdialog1 ui;  // define an object named "ui" as being a djdialog1 
                  QDialog *mydialog = new QDialog;
                  ui.setupUi(mydialog);
                  */
                  // following line is new (after initial make)
                  djdialog1 *mydialog = new djdialog1;
              	mydialog->show();
                  return app.exec();
              }
              

              I got this from a Qt tutorial.

              [Added code tags ~kshegunov]

              K 1 Reply Last reply 6 Dec 2016, 08:39
              0
              • M Offline
                M Offline
                mrjj
                Lifetime Qt Champion
                wrote on 5 Dec 2016, 15:18 last edited by
                #13

                Hi
                It seems you did already call it the normal place ?
                djdialog1::djdialog1(QWidget *parent)
                : QDialog(parent)
                {
                setupUi(this); // initialize my form <<<<<<<<<<<<<<<<<<<

                In the ctor.
                Outside and in main is very unusual :)

                D 1 Reply Last reply 5 Dec 2016, 19:07
                0
                • M mrjj
                  5 Dec 2016, 15:18

                  Hi
                  It seems you did already call it the normal place ?
                  djdialog1::djdialog1(QWidget *parent)
                  : QDialog(parent)
                  {
                  setupUi(this); // initialize my form <<<<<<<<<<<<<<<<<<<

                  In the ctor.
                  Outside and in main is very unusual :)

                  D Offline
                  D Offline
                  DocDJ
                  wrote on 5 Dec 2016, 19:07 last edited by
                  #14

                  @mrjj The call to setupUi in main was commented-out, so it doesn't happen twice. Maybe I need to do it in main, instead of the dialog. I will have read about how to set a breakpoint in Qt4.

                  M J 2 Replies Last reply 5 Dec 2016, 22:29
                  0
                  • D DocDJ
                    5 Dec 2016, 19:07

                    @mrjj The call to setupUi in main was commented-out, so it doesn't happen twice. Maybe I need to do it in main, instead of the dialog. I will have read about how to set a breakpoint in Qt4.

                    M Offline
                    M Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on 5 Dec 2016, 22:29 last edited by
                    #15

                    @DocDJ
                    Well you can create the default desktop widget application (File -> New Project )
                    and see if that includes the setupUi in mainwindow constructor.

                    1 Reply Last reply
                    0
                    • D DocDJ
                      5 Dec 2016, 19:07

                      @mrjj The call to setupUi in main was commented-out, so it doesn't happen twice. Maybe I need to do it in main, instead of the dialog. I will have read about how to set a breakpoint in Qt4.

                      J Offline
                      J Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on 6 Dec 2016, 05:26 last edited by
                      #16

                      @DocDJ Sorry, but this is just completely wrong:

                      Ui::djdialog1 ui; // define an object named "ui" as being a djdialog1
                      QDialog *mydialog = new QDialog;
                      ui.setupUi(mydialog);
                      

                      You call setupUi() in the window/dialog you create. That means djdialog1 calls it in its constructor (what you're already doing). main is not the correct place to call setupUI. You really should learn Qt basics first, what you are doing now is just guessing and is wrong.
                      You can create a default widgets project edit the main window, add a dialog and check the generated code.

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      K 1 Reply Last reply 6 Dec 2016, 08:37
                      0
                      • J jsulm
                        6 Dec 2016, 05:26

                        @DocDJ Sorry, but this is just completely wrong:

                        Ui::djdialog1 ui; // define an object named "ui" as being a djdialog1
                        QDialog *mydialog = new QDialog;
                        ui.setupUi(mydialog);
                        

                        You call setupUi() in the window/dialog you create. That means djdialog1 calls it in its constructor (what you're already doing). main is not the correct place to call setupUI. You really should learn Qt basics first, what you are doing now is just guessing and is wrong.
                        You can create a default widgets project edit the main window, add a dialog and check the generated code.

                        K Offline
                        K Offline
                        kshegunov
                        Moderators
                        wrote on 6 Dec 2016, 08:37 last edited by kshegunov 12 Jun 2016, 08:38
                        #17

                        @jsulm said in program closes too soon:

                        Sorry, but this is just completely wrong:

                        Actually it's correct. I often initialize the widgets through forms without deriving. The most typical example being:

                        QMainWindow window;
                        Ui::MyMainWindowForm ui;
                        ui.setupUi(&window);
                        
                        window.show;
                        

                        Notice that the initialized widget is a generic one (as with his code).

                        PS. And by the way this is commented out.

                        Kind regards.

                        Read and abide by the Qt Code of Conduct

                        J 1 Reply Last reply 6 Dec 2016, 08:42
                        0
                        • D DocDJ
                          5 Dec 2016, 14:41

                          It would appear that setupUi is not being called. Here is my main.cpp:

                          #include <QApplication>
                          // following 2 lines are initially here to build the "project"
                          //#include <QDialog>
                          //#include "ui_djdialog1.h"
                          // following line replaces the above 2 lines
                          #include "djdialog1.h"
                          
                          int main(int argc, char *argv[])
                          {
                              QApplication app(argc, argv);
                              /** original code before 1st qmake-qt4 my.pro
                              Ui::djdialog1 ui;  // define an object named "ui" as being a djdialog1 
                              QDialog *mydialog = new QDialog;
                              ui.setupUi(mydialog);
                              */
                              // following line is new (after initial make)
                              djdialog1 *mydialog = new djdialog1;
                          	mydialog->show();
                              return app.exec();
                          }
                          

                          I got this from a Qt tutorial.

                          [Added code tags ~kshegunov]

                          K Offline
                          K Offline
                          kshegunov
                          Moderators
                          wrote on 6 Dec 2016, 08:39 last edited by
                          #18

                          @DocDJ
                          Please use the triple backtick to get the code formatted, so people don't get confused and you don't lose any symbols due to forum markup.

                          Read and abide by the Qt Code of Conduct

                          1 Reply Last reply
                          0
                          • K kshegunov
                            6 Dec 2016, 08:37

                            @jsulm said in program closes too soon:

                            Sorry, but this is just completely wrong:

                            Actually it's correct. I often initialize the widgets through forms without deriving. The most typical example being:

                            QMainWindow window;
                            Ui::MyMainWindowForm ui;
                            ui.setupUi(&window);
                            
                            window.show;
                            

                            Notice that the initialized widget is a generic one (as with his code).

                            PS. And by the way this is commented out.

                            Kind regards.

                            J Offline
                            J Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on 6 Dec 2016, 08:42 last edited by
                            #19

                            @kshegunov You're right - it is not wrong, but it is not how it is usually done (at least what I saw so far).
                            Isn't setupUi() called in the constructor already?

                            djdialog1::djdialog1(QWidget *parent)
                                : QDialog(parent)
                            	{
                            	    setupUi(this); // initialize my form
                            

                            @DocDJ "Adding Ui-> in front of answerbox causes an error." - it is ui-> not Ui->

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            K 1 Reply Last reply 6 Dec 2016, 08:45
                            0
                            • J jsulm
                              6 Dec 2016, 08:42

                              @kshegunov You're right - it is not wrong, but it is not how it is usually done (at least what I saw so far).
                              Isn't setupUi() called in the constructor already?

                              djdialog1::djdialog1(QWidget *parent)
                                  : QDialog(parent)
                              	{
                              	    setupUi(this); // initialize my form
                              

                              @DocDJ "Adding Ui-> in front of answerbox causes an error." - it is ui-> not Ui->

                              K Offline
                              K Offline
                              kshegunov
                              Moderators
                              wrote on 6 Dec 2016, 08:45 last edited by kshegunov 12 Jun 2016, 08:47
                              #20

                              @jsulm said in program closes too soon:

                              but it is not how it is usually done

                              True, I'm only remarking it's a valid approach. I actually don't advise its usage for beginners.

                              Isn't setupUi() called in the constructor already?

                              No, because the object in question is of type QDialog. There's duplication of names - the same name is used for the form and the custom dialog, so I think this is where the confusion stems from.

                              @DocDJ
                              Please provide the header file for your class as well. I have a strong suspicion you're deriving both from the dialog and the ui form.

                              Read and abide by the Qt Code of Conduct

                              1 Reply Last reply
                              0

                              16/20

                              6 Dec 2016, 05:26

                              • Login

                              • Login or register to search.
                              16 out of 20
                              • First post
                                16/20
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved