comboBox->additem() crash application..



  • @VRonin it will crash however



  • @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?



  • @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.



  • 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



  • @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 ??



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

    in the constructor of your class



  • @VRonin ok..

    no output were showed

    i've put it after

    ui->setupUi(this);
    

    in the dialog



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



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



  • 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



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

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

    no, i don't see any output..



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



  • @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?



  • @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!



  • @VRonin you mean the os x crash report??



  • @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



  • @TheCipo76
    Do you sit inside Qt Creator and run your app from within there via the debugger? We are expecting that when something "crashes", the debugger will catch that and show a stacktrace of exactly where it was in your code.



  • 1 QLineEdit::setText(QString const&) 0x1003727e8
    2 inserisciarticolo::on_comboBox_Cliente_currentTextChanged(QString const&) inserisciarticolo.cpp 497 0x10003ce05
    3 inserisciarticolo::qt_static_metacall(QObject *, QMetaObject::Call, int, void * *) moc_inserisciarticolo.cpp 92 0x10008ec0d
    4 inserisciarticolo::qt_metacall(QMetaObject::Call, int, void * *) moc_inserisciarticolo.cpp 124 0x10008eda5
    5 QMetaObject::activate(QObject *, int, int, void * *) 0x100edf7d6
    6 QComboBoxPrivate::_q_emitCurrentIndexChanged(QModelIndex const&) 0x100332724
    7 QComboBoxPrivate::setCurrentIndex(QModelIndex const&) 0x100337121
    8 QComboBoxPrivate::_q_rowsInserted(QModelIndex const&, int, int) 0x100336048
    9 QMetaObject::activate(QObject *, int, int, void * *) 0x100edfaaa
    10 QAbstractItemModel::endInsertRows() 0x100e697f2
    11 QStandardItemPrivate::insertRows(int, int, QList<QStandardItem *> const&) 0x100b043ca
    12 QComboBox::insertItem(int, QIcon const&, QString const&, QVariant const&) 0x1003389fc
    13 QComboBox::insertItem(int, QString const&, QVariant const&) qcombobox.h 279 0x10002106d
    14 QComboBox::addItem(QString const&, QVariant const&) qcombobox.h 272 0x100017aa7
    15 inserisciarticolo::inserisciarticolo(QWidget *, QString const&, QString const&) inserisciarticolo.cpp 70 0x1000337d8
    16 inserisciarticolo::inserisciarticolo(QWidget *, QString const&, QString const&) inserisciarticolo.cpp 19 0x100038c4d
    17 MainWindow::on_action_InsArticolo_triggered() mainwindow.cpp 100 0x100008ae8
    18 MainWindow::qt_static_metacall(QObject *, QMetaObject::Call, int, void * *) moc_mainwindow.cpp 162 0x10008d839
    19 MainWindow::qt_metacall(QMetaObject::Call, int, void * *) moc_mainwindow.cpp 214 0x10008db45
    20 QMetaObject::activate(QObject *, int, int, void * *) 0x100edf7d6
    21 QAction::activate(QAction::ActionEvent) 0x10022d615
    22 QMenuPrivate::activateCausedStack(QVector<QPointer<QWidget>> const&, QAction *, QAction::ActionEvent, bool) 0x1003b010f
    23 QMenuPrivate::activateAction(QAction *, QAction::ActionEvent, bool) 0x1003ad6c4
    24 QWidget::event(QEvent *) 0x100271050
    25 QMenu::event(QEvent *) 0x1003b53c2
    26 QApplicationPrivate::notify_helper(QObject *, QEvent *) 0x100236d32
    27 QApplication::notify(QObject *, QEvent *) 0x100239b8d
    28 QCoreApplication::notifyInternal2(QObject *, QEvent *) 0x100eae85f
    29 QApplicationPrivate::sendMouseEvent(QWidget *, QMouseEvent *, QWidget *, QWidget *, QWidget * *, QPointer<QWidget>&, bool) 0x100237660
    30 QWidgetWindow::handleMouseEvent(QMouseEvent *) 0x1002913a1
    31 QWidgetWindow::event(QEvent *) 0x10028fe60
    32 QApplicationPrivate::notify_helper(QObject *, QEvent *) 0x100236d32
    33 QApplication::notify(QObject *, QEvent *) 0x10023810d
    34 QCoreApplication::notifyInternal2(QObject *, QEvent *) 0x100eae85f
    35 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent *) 0x1007ec094
    36 QWindowSystemInterface::sendWindowSystemEvents(QFlagsQEventLoop::ProcessEventsFlag) 0x1007d3d4b
    37 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void *) 0x105a0faf1
    38 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION 0x7fff3be90155
    39 __CFRunLoopDoSource0 0x7fff3be900fb
    40 __CFRunLoopDoSources0 0x7fff3be73b95
    41 __CFRunLoopRun 0x7fff3be7313e
    42 CFRunLoopRunSpecific 0x7fff3be72a28
    43 RunCurrentEventLoopInMode 0x7fff3b10bb35
    44 ReceiveNextEventCommon 0x7fff3b10b774
    45 _BlockUntilNextEventMatchingListInModeWithFilter 0x7fff3b10b5e8
    46 _DPSNextEvent 0x7fff393c7eb7
    47 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] 0x7fff393c6c56
    48 -[NSApplication run] 0x7fff393c0cb9
    49 QCocoaEventDispatcher::processEvents(QFlagsQEventLoop::ProcessEventsFlag) 0x105a0e8ed
    50 QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) 0x100eaa3b2
    51 QCoreApplication::exec() 0x100eaef72
    52 main main.cpp 11 0x100003b54
    53 start 0x7fff6905508d


  • Lifetime Qt Champion

    The macOS crash report should also contain useful information in that regard so you can post it.



  • @TheCipo76

    2 inserisciarticolo::on_comboBox_Cliente_currentTextChanged(QString const&) inserisciarticolo.cpp 497 0x10003ce05

    While executing your comboBox->additem(), you have a slot on_comboBox_Cliente_currentTextChanged, which does a setText(), which you haven't told us about? What is your code for that function...? Because I think you're going to find the crash is there :)

    P.S.
    This is why learning to use a debugger will be about the most productive time investment you can make!



  • @JonB because i think the problem is not there.. arg1 was not used..
    it's a blanking form slot..

    void inserisciarticolo::on_comboBox_Cliente_currentTextChanged(const QString &arg1)
    {
        if (AzzeraI == true) {
            for (int i=0;i<10;i++) {
                array_Codice[i]->setText("");
                array_Descrizione[i]->setText("");
                array_Qta[i]->setValue(0);
                array_Origine[i]->setCurrentText("");
                array_Fornitore[i]->setCurrentText("");
            }
        }
    }
    

    You're right!! The problem was "AzzeraI" var..
    i set it to false on dialog loading and all works!

    Thanks to all


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.