Thread-Problem: QMessageBox erstellen



  • Hallo Community,

    ich habe einen Thread, der bei Programmstart ausgeführt wird und so lange (in einer Schleife) durchläuft, bis das Ende des Programms erreicht wird. Klappt auch alles supi, nur, dass ich in einem Thread kein QWidget erstellen darf, weil man das ja nur im GUI-Thread machen darf.

    Das Problem ist, dass ich aber eine QMessageBox::information() in diesem Thread erstellen muss. Oder besser gesagt, ich muss dem Thread irgendwie weiß machen, dass er die MessageBox gefälligst im GUI-Thread zu erstellen hat. Ich habe es mit Signals / Slots versucht, vergeblich. Auch habe ich beispielsweise dem Thread eine eigene Klasse geschenkt, wobei ich dann Thread mit MainWindow miteinander connect()e. Vergeblich.

    Eine andere Möglichkeit wäre, dass ich den Thread beende, diese QMessageBox dann aufrufe, und dann den Thread wieder aufrufe, aber das kann ich nicht. Der Thread selbst muss nämlich jede 250 Millisekunden etwas wichtiges überprüfen.

    Nun, wie stelle ich das jetzt am besten an? Um es nochmal zusammenzufassen:
    Ich habe einen Thread der um keinen Preis “mal kurz“ beendet werden darf, muss jedoch eine QMessageBox erstellen.

    Mit freundlichen Grüßen,
    Riesling



  • Das Problem habe ich nun anders gelöst.
    Eigentlich war das mit dem Thread ein Designfehler, Idle-Threads sind nämlich nicht so dolle. Stattdessen habe ich QTimer genommen, wobei das Ganze nun wie gewünscht funktioniert.

    Dennoch!
    Die Frage bleibt (da sie mich interessiert).

    Angenommen man hat ein Thread der wirklich niemals beendet werden darf, aber irgendwann im Laufe der Zeit eine QMessageBox anzeigen soll. Wie macht man sowas?


Anmelden zum Antworten