2017-01-18 4 views
-1

ich bin neu in Qt-Entwicklung und mit Blick auf ein Problem. Ich möchte alle 1 Sekunde eine Funktion updateCompass aufrufen, die den bereits im Widget gezeichneten Kompasswert aktualisiert.wie eine Funktion jede Sekunde, die qt Widget aktualisiert

Ich muss wissen, wie und wo die Funktion aufrufen.

+6

QTimer nachschlagen. Außerdem weigere ich mich zu glauben, dass du tatsächlich versucht hast, nach diesem Problem zu suchen, und du hast nichts gefunden. –

+1

Sei nicht zu hart, @Matteo. Als ich "Qt jede Sekunde" in Google eingegeben habe, waren nur die ersten fünf Links relevant. Vielleicht wurde der OP von Link sechs abgeschreckt, was eine bizarre Poesie von einem Godophile war :-) – paxdiablo

+1

Und dann brauchst du 'alle zwei Sekunden' und stell dir eine ganz andere Frage. – dtech

Antwort

3

Qt hat eine spezifische Methode, um genau dies zu tun, indem Sie die QTimer class verwenden.

Sie können einen Timer (einmalig oder periodisch) erstellen und sein timeout Signal an jeden Slot (Funktion) anschließen, den Sie brauchen, um Ihre Magie zu weben.

In der Tat, dass verlinkte Seite hat genau der Code, den Sie verwenden müssen, um die gewünschte Funktion zu erfüllen:

QTimer *timer = new QTimer(this); 
connect(timer, SIGNAL(timeout()), this, SLOT(update())); 
timer->start(1000); 

Diese in Ihrer update Funktion führen wird einmal pro Sekunde aufgerufen wird (innerhalb der Grenzen auferlegt von Qt re Genauigkeit und so weiter).

1

Beispiel Ihres Falles.

QTimer *timer = new QTimer(this); 

QObject::connect(timer, SIGNAL(timeout()), this, SLOT(updateCompass())); 

timer->start(1000); 

Dies ruft updateCompass() jede Sekunde.

Diese Links können hilfreich für Sie sein. QTimer & Using QTimer