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. comboBox->additem() crash application..
Forum Updated to NodeBB v4.3 + New Features

comboBox->additem() crash application..

Scheduled Pinned Locked Moved Solved General and Desktop
27 Posts 6 Posters 5.1k Views 2 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.
  • M mrjj
    8 Nov 2018, 16:51

    Hi
    Check if
    cl.first(); returns true before using it.

    T Offline
    T Offline
    TheCipo76
    wrote on 8 Nov 2018, 16:59 last edited by TheCipo76 11 Aug 2018, 17:01
    #3

    @mrjj

    if (cl.exec()) {
            msg.setText("QUI");
            msg.exec();
            cl.first();
            if (cl.first()) {
                    msg.setText("OK");
                    msg.exec();
            }
            do {
                ui->comboBox_Cliente->addItem(cl.value(0).toString());
            } while (cl.next());
        }
    

    messagebox will appear with OK message

    if i replace additem with messagebox all works correctly

    M 1 Reply Last reply 8 Nov 2018, 17:03
    0
    • T TheCipo76
      8 Nov 2018, 16:59

      @mrjj

      if (cl.exec()) {
              msg.setText("QUI");
              msg.exec();
              cl.first();
              if (cl.first()) {
                      msg.setText("OK");
                      msg.exec();
              }
              do {
                  ui->comboBox_Cliente->addItem(cl.value(0).toString());
              } while (cl.next());
          }
      

      messagebox will appear with OK message

      if i replace additem with messagebox all works correctly

      M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 8 Nov 2018, 17:03 last edited by
      #4

      Hi
      Super.
      Try
      QString test=cl.value(0).toString();
      and see if it crash on that line instead.
      else it must mean
      ui->comboBox_Cliente is not valid pointer.

      T 1 Reply Last reply 8 Nov 2018, 17:21
      0
      • V Offline
        V Offline
        VRonin
        wrote on 8 Nov 2018, 17:07 last edited by
        #5

        I know this does not address your problem but it should solve it anyway. Replace all your code with:

        QSqlQueryModel* queryModel = new QSqlQueryModel(this);
        queryModel.setQuery(QStringLiteral("Select RAGSOC from CLIENTI order by RAGSOC ASC"));
        if(dynamic_cast<QSqlQueryModel*>(ui->comboBox_Cliente->model()))
        ui->comboBox_Cliente->model()->deleteLater();
        ui->comboBox_Cliente->setModel(queryModel);
        

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        T 1 Reply Last reply 8 Nov 2018, 17:21
        0
        • M mrjj
          8 Nov 2018, 17:03

          Hi
          Super.
          Try
          QString test=cl.value(0).toString();
          and see if it crash on that line instead.
          else it must mean
          ui->comboBox_Cliente is not valid pointer.

          T Offline
          T Offline
          TheCipo76
          wrote on 8 Nov 2018, 17:21 last edited by
          #6

          @mrjj i've tried and crash on additem()..

          comboBox is not a pointer .. i've create it with designer in the ui

          C 1 Reply Last reply 8 Nov 2018, 17:27
          0
          • V VRonin
            8 Nov 2018, 17:07

            I know this does not address your problem but it should solve it anyway. Replace all your code with:

            QSqlQueryModel* queryModel = new QSqlQueryModel(this);
            queryModel.setQuery(QStringLiteral("Select RAGSOC from CLIENTI order by RAGSOC ASC"));
            if(dynamic_cast<QSqlQueryModel*>(ui->comboBox_Cliente->model()))
            ui->comboBox_Cliente->model()->deleteLater();
            ui->comboBox_Cliente->setModel(queryModel);
            
            T Offline
            T Offline
            TheCipo76
            wrote on 8 Nov 2018, 17:21 last edited by
            #7

            @VRonin it will crash however

            1 Reply Last reply
            0
            • T TheCipo76
              8 Nov 2018, 17:21

              @mrjj i've tried and crash on additem()..

              comboBox is not a pointer .. i've create it with designer in the ui

              C Offline
              C Offline
              Cobra91151
              wrote on 8 Nov 2018, 17:27 last edited by
              #8

              @TheCipo76

              Hi! Actually in designer it creates pointers, ui-> is the namespace, and comboBox_Cliente-> is a C++ pointer. What is the error message when it crashes?

              T 1 Reply Last reply 8 Nov 2018, 17:46
              0
              • C Cobra91151
                8 Nov 2018, 17:27

                @TheCipo76

                Hi! Actually in designer it creates pointers, ui-> is the namespace, and comboBox_Cliente-> is a C++ pointer. What is the error message when it crashes?

                T Offline
                T Offline
                TheCipo76
                wrote on 8 Nov 2018, 17:46 last edited by TheCipo76 11 Aug 2018, 17:47
                #9

                @Cobra91151

                in application output :

                18:45:34: The process was ended forcefully.
                18:45:34: /Users/matteo/Desktop/C++/QT/EasyGest/build-EasyGest-Desktop_Qt_5_11_2_clang_64bit18-Release/EasyGest.app/Contents/MacOS/EasyGest crashed.

                C 1 Reply Last reply 8 Nov 2018, 19:35
                0
                • V Offline
                  V Offline
                  VRonin
                  wrote on 8 Nov 2018, 17:53 last edited by
                  #10

                  in the constructor of your class, can you add QObject::connect(ui->comboBox_Cliente,&Qobject::destroyed,[]()->void{qDebug("Something exploded");});?

                  If you see the output it means you are deleting your ui before reusing it

                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                  ~Napoleon Bonaparte

                  On a crusade to banish setIndexWidget() from the holy land of Qt

                  T V 2 Replies Last reply 8 Nov 2018, 18:03
                  0
                  • V VRonin
                    8 Nov 2018, 17:53

                    in the constructor of your class, can you add QObject::connect(ui->comboBox_Cliente,&Qobject::destroyed,[]()->void{qDebug("Something exploded");});?

                    If you see the output it means you are deleting your ui before reusing it

                    T Offline
                    T Offline
                    TheCipo76
                    wrote on 8 Nov 2018, 18:03 last edited by
                    #11

                    @VRonin said in comboBox->additem() crash application..:

                    QObject::connect(ui->comboBox_Cliente,&Qobject::destroyed,->void{qDebug("Something exploded");});

                    i don't understand where i have to put it..

                    in the .h file

                    after Q_OBJECT ??

                    1 Reply Last reply
                    0
                    • V VRonin
                      8 Nov 2018, 17:53

                      in the constructor of your class, can you add QObject::connect(ui->comboBox_Cliente,&Qobject::destroyed,[]()->void{qDebug("Something exploded");});?

                      If you see the output it means you are deleting your ui before reusing it

                      V Offline
                      V Offline
                      VRonin
                      wrote on 8 Nov 2018, 18:04 last edited by
                      #12

                      @VRonin said in comboBox->additem() crash application..:

                      in the constructor of your class

                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                      ~Napoleon Bonaparte

                      On a crusade to banish setIndexWidget() from the holy land of Qt

                      T 1 Reply Last reply 8 Nov 2018, 18:10
                      0
                      • V VRonin
                        8 Nov 2018, 18:04

                        @VRonin said in comboBox->additem() crash application..:

                        in the constructor of your class

                        T Offline
                        T Offline
                        TheCipo76
                        wrote on 8 Nov 2018, 18:10 last edited by TheCipo76 11 Aug 2018, 18:11
                        #13

                        @VRonin ok..

                        no output were showed

                        i've put it after

                        ui->setupUi(this);
                        

                        in the dialog

                        1 Reply Last reply
                        0
                        • V Offline
                          V Offline
                          VRonin
                          wrote on 8 Nov 2018, 18:23 last edited by
                          #14

                          And it still crashes? did you set Qt::WA_DeleteOnClose?

                          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                          ~Napoleon Bonaparte

                          On a crusade to banish setIndexWidget() from the holy land of Qt

                          T 1 Reply Last reply 8 Nov 2018, 18:29
                          0
                          • V VRonin
                            8 Nov 2018, 18:23

                            And it still crashes? did you set Qt::WA_DeleteOnClose?

                            T Offline
                            T Offline
                            TheCipo76
                            wrote on 8 Nov 2018, 18:29 last edited by
                            #15

                            @VRonin No, i don't know what is it.. sorry but i'm new user of Qt

                            1 Reply Last reply
                            0
                            • V Offline
                              V Offline
                              VRonin
                              wrote on 8 Nov 2018, 18:34 last edited by
                              #16

                              One more try, add QObject::connect(this,&QObject::destroyed,[]()->void{qDebug("Something big exploded");}); and see if you have any output when you crash the application

                              "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                              ~Napoleon Bonaparte

                              On a crusade to banish setIndexWidget() from the holy land of Qt

                              T 1 Reply Last reply 8 Nov 2018, 18:50
                              0
                              • V VRonin
                                8 Nov 2018, 18:34

                                One more try, add QObject::connect(this,&QObject::destroyed,[]()->void{qDebug("Something big exploded");}); and see if you have any output when you crash the application

                                T Offline
                                T Offline
                                TheCipo76
                                wrote on 8 Nov 2018, 18:50 last edited by
                                #17

                                @VRonin said in comboBox->additem() crash application..:

                                QObject::connect(this,&QObject::destroyed,->void{qDebug("Something big exploded");});

                                no, i don't see any output..

                                1 Reply Last reply
                                0
                                • V Offline
                                  V Offline
                                  VRonin
                                  wrote on 8 Nov 2018, 18:54 last edited by VRonin 11 Aug 2018, 19:14
                                  #18

                                  This is turning into a mistery now. Can you post the stack trace at the moment of crash?

                                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                  ~Napoleon Bonaparte

                                  On a crusade to banish setIndexWidget() from the holy land of Qt

                                  T 1 Reply Last reply 8 Nov 2018, 19:51
                                  2
                                  • T TheCipo76
                                    8 Nov 2018, 17:46

                                    @Cobra91151

                                    in application output :

                                    18:45:34: The process was ended forcefully.
                                    18:45:34: /Users/matteo/Desktop/C++/QT/EasyGest/build-EasyGest-Desktop_Qt_5_11_2_clang_64bit18-Release/EasyGest.app/Contents/MacOS/EasyGest crashed.

                                    C Offline
                                    C Offline
                                    Cobra91151
                                    wrote on 8 Nov 2018, 19:35 last edited by Cobra91151 11 Aug 2018, 19:35
                                    #19

                                    @TheCipo76

                                    This crash happens after you addItem() to the ui->comboBox_Cliente?

                                    Try to change the code to:

                                    if (cl.exec()) {
                                        msg.setText("QUI");
                                        msg.exec();
                                    
                                        if (cl.first()) {
                                             msg.setText("OK");
                                             msg.exec();
                                        }
                                    
                                        do {
                                            ui->comboBox_Cliente->addItem(cl.value(0).toString());
                                        } while (cl.next());
                                     }
                                    

                                    and check if it still crashes?

                                    1 Reply Last reply
                                    0
                                    • T TheCipo76
                                      8 Nov 2018, 16:46

                                      Hi,
                                      i've populated from database n.1 comboBox and all is OK

                                      if i click on Annulla pushbutton (this is the code):

                                      void inserisciarticolo::on_pushButton_Annulla_clicked()
                                      {
                                          // ANNULLA
                                          if (aDatabase.open()) {
                                              aDatabase.close();
                                          }
                                          close();
                                      }
                                      

                                      and try to re-load the dialog (from application menu)

                                      after first record of database additem() crashes the application

                                      if i comment the additem() all works

                                      this is the code i've used to load the comboBox data:

                                      QSqlQuery cl;
                                          cl.prepare("Select RAGSOC from CLIENTI order by RAGSOC ASC");
                                          ui->comboBox_Cliente->clear();
                                          if (cl.exec()) {
                                              cl.first();
                                              do {
                                                  ui->comboBox_Cliente->addItem(cl.value(0).toString());
                                              } while (cl.next());
                                          }
                                      

                                      ideas??

                                      Thanks in advance.

                                      J Offline
                                      J Offline
                                      JonB
                                      wrote on 8 Nov 2018, 19:44 last edited by JonB 11 Aug 2018, 19:47
                                      #20

                                      @TheCipo76

                                      after first record of database additem() crashes the application

                                      Has nobody yet asked you to run this in a debugger (e.g. from Qt Creator)? And give us the stacktrace? EDIT: Oh, @VRonin has 2 posts above. Please do so!

                                      1 Reply Last reply
                                      1
                                      • V VRonin
                                        8 Nov 2018, 18:54

                                        This is turning into a mistery now. Can you post the stack trace at the moment of crash?

                                        T Offline
                                        T Offline
                                        TheCipo76
                                        wrote on 8 Nov 2018, 19:51 last edited by
                                        #21

                                        @VRonin you mean the os x crash report??

                                        V J 2 Replies Last reply 8 Nov 2018, 19:59
                                        0
                                        • T TheCipo76
                                          8 Nov 2018, 19:51

                                          @VRonin you mean the os x crash report??

                                          V Offline
                                          V Offline
                                          VRonin
                                          wrote on 8 Nov 2018, 19:59 last edited by
                                          #22

                                          @TheCipo76 said in comboBox->additem() crash application..:

                                          you mean the os x crash report??

                                          Nope, the stack trace which is a log of all the functions called up to the point of crash. If you use Qt Creator, see http://doc.qt.io/qtcreator/creator-debug-mode.html#viewing-call-stack-trace

                                          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                          ~Napoleon Bonaparte

                                          On a crusade to banish setIndexWidget() from the holy land of Qt

                                          1 Reply Last reply
                                          2

                                          12/27

                                          8 Nov 2018, 18:04

                                          • Login

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