Seite 1 von 1

qlabel innerhalb qstatusbar aktualisieren

Verfasst: 20. Dezember 2006 14:26
von biiiep
Hallo,

nach einigen erfolglosen Recherchen hoffe ich das ihr mir helfen könnt.

Ich will einen label innerhalb einer statusbar aktualisieren, leider klappt die aktualisierung nicht.

Code: Alles auswählen

// hier will ich die aktualisierung anstoßen
void KOffDialog::accept() 
{
  if( minToVal() > 0)
    for(int i=minToVal(); i >= 0; i--)
    {   TimeLeft = i;
        wait();
    }
}

// hier soll der Timer 1s verweilen und dann updateTime starten, der Timer wird im Konstruktor mit refreshTimer = new Timer(this); initialisiert
// und so "connected": connect( refreshTimer, SIGNAL(timeout()), this, SLOT(updateTime()));
void KOffDialog::wait() 
{
    refreshTimer->start(1000, TRUE);
}

void KOffDialog::updateTime()
{
  labelMinLeft->setNum(TimeLeft);
  labelMinLeft->update();
  statusBar->update();
}
vielen dank schon mal für anregungen und ideen

Verfasst: 21. Dezember 2006 03:38
von Tarek
Ich seh da zwei Probleme:
  1. Der Aufruf von QTimer::start() führt zu keiner Verzögerung im Programmablauf, d.h. dein Programm startet zur Zeit einfach den Timer mehrmals unmittelbar hintereinander neu.
  2. Der Timer kann sein Signal erst senden wenn das Programm zur Hauptschleife zurückkehrt, d.h. in diesem Fall erst nach Verlassen von accept().

Verfasst: 21. Dezember 2006 11:41
von biiiep
jo, da hast du recht.
das hab ich mir gestern nacht auch überlegt, dass es daran liegt, dass feld erst nach beenden von accept() aktualisiert wird.

dann werd ich mir mal ne andere Lösung überlegen, aber vielen Dank

gruß

Verfasst: 21. Dezember 2006 13:26
von biiiep
habe das problem gelöst, indem ich den timerEvent() neuimplementiert habe. der wird dann nämlich von der hauptschleife gestartet und aktualisiert jedesmal das fenster.

;)