Wir legen wir in der Worker Klasse in worker.h drei Funktionen an, die Berechnungen simulieren sollen. Wir deklarieren zusätzlich eine Funktion zum Senden von Nachrichten an das MainWindow Objekt (sendSignal()
) und eine Funktion zum Empfang von Berechnungsanforderungen (processData()
).
1 2 3 4 5 6 7 8 9 10 |
private: bool performTaskAlpha(); bool performTaskBeta(); bool performTaskGamma(); signals: void sendSignal(const QString &signal); public slots: void processData(const int ¶meter); |
In worker.cpp erfolgt die Umsetzung der Funktionen für die simulierten Berechnungen. In processData()
definieren wir eine switch Anweisung, die je nach Wert von parameter
drei unterschiedliche Berechnungen zur Ausführung bringt. Nach Abschluss der jeweiligen Berechnung wird ein Signal ausgesendet, welches vom MainWindow Objekt empfangen und ausgewertet wird. Bei Übergabe eines nicht definierten Wertes für parameter
wird eine Fehlermeldung emittiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
switch (parameter) { case 1: if (performTaskAlpha()) { emit sendSignal("Task Alpha abgeschlossen"); } else { emit sendSignal("Task Alpha abgebrochen"); } break; . . . default: emit sendSignal("Ungültiger Parameter"); break; } |
Im letzten Abschnitt von worker.cpp erfolgt die Definition der drei Funktionen performTaskAlpha()
, performTaskBeta()
und performTaskGamma()
. Wir simulieren Berechnungen, die jeweils eine, zwei oder drei Sekunden für die Ausführung benötigen. Für die Verwendung von sleep()
ist die Einbindung der QThread Headerdatei erforderlich.
1 2 |
QThread::sleep(1); return true; |
Nach Ausführung des Programms sehen wir ein Fenster. Klicken wir auf den Button, dann erhalten wir nach der jeweils definierten Zeit sofort eine Ausgabe des Status.
Das komplette Beispiel herunterladen: Application.zip
Hinterlasse jetzt einen Kommentar