Seite 1 von 1

Signale werden zwar empfangen, aber der Slot nicht executed

Verfasst: 27. September 2011 08:58
von woody
Hi, kleine Frage:
Ich habe eine GUI Anwendung und das MainWindow hat eine QStatusBar. Von anderen Klassen sollen Statusmeldungen über ein Signal an das MainWindow gesendet werden können.
Nur scheinbar wird der Slot beim MainWindow nur jedes 2. mal ausgeführt.

Bsp.:

Code: Alles auswählen

andere klasse
emit status("daten werden geladen",0);
//data load, benötigt etwas zeit....
emit status("daten wurden geladen",0);
Es wird nur der 2. status in der Statusbar angezeigt, obwohl der 1. status auch beim MainWindow ankommt(wurde getestet).

Slot MainWindow:

Code: Alles auswählen

void MainWindow::presentStatusMsg(QString mesg, int msec)
{
    ui->statusBar->clearMessage();
    if(msec == 0)
        ui->statusBar->showMessage(mesg);
    else
        ui->statusBar->showMessage(mesg,msec);
}
Auch ein Update oder Repaint bringt nichts...

danke

Re: Signale werden zwar empfangen, aber der Slot nicht execu

Verfasst: 27. September 2011 09:58
von dennisDennis
ruf mal nach dem 1. emit qApp->processEvents(); auf.
Ist allerdings kein guter Stil ;-) Besser wäre es das Laden der Daten in einen eigenen Thread zu packen.