Search code examples
c++qtqt4

Display a QMessageBox from a QThread


I want to display a message box from a separate thread, however, I get this error:

QThread: Destroyed while thread is still running

Can anyone explain how to display a message box from a thread?


Solution

  • Emit a signal. Since you cannot do UI stuff in a Qthread, instead send your message as an argument of your signal.

    signal decalaration in your qthread:

    signals:
      void write2SysStatus(QString theMessage);
    

    emitting the signal from the qthread:

    emit write2SysStatus("Some status");
    

    slot declaration/definition in QMainWindow:

    public slots:
      void eWriteLine ( QString theMessage ){
           //this is where you use you message box.
      }
    

    connecting of the slot and signal:

    connect(pFPSengine, SIGNAL(write2SysStatus(QString)), this,SLOT(eWriteLine(QString)));