Signale werden zwar empfangen, aber der Slot nicht executed

Alles rund um die Programmierung mit Qt
Antworten
woody
Beiträge: 85
Registriert: 1. April 2011 21:13

Signale werden zwar empfangen, aber der Slot nicht executed

Beitrag 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
dennisDennis
Beiträge: 17
Registriert: 23. September 2011 16:21

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

Beitrag 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.
Antworten