Ich habe eine einfache GUI für meine Anwendung = Ich muss einige Eingabeparameter für meine mathematische Funktion, klicken Sie dann auf "Berechnen" -Taste, und die Funktion startet. Mathematische Funktionen sind in reinem C geschrieben, also gibt es keine Objekte, nur Funktionen.Qt GUI Mathe-Anwendung hängt GUI während der Berechnung
Es sieht wie folgt aus:
#include "mymath.h"
class myMath : public QMainWindow
{
Q_OBJECT
// ...
void compute();
};
void myMath::compute()
{
//get parameters from gui
call_C_fun();
// save results to GUI
}
Das Hauptproblem mit diesem Code ist, dass wenn ich auf ‚Compute‘ (es sooo viel Rechen tut, dauert es bis zu 5 Minuten oder so) es hängt heraus meine GUI, so kann ich nichts anderes tun (ich sehe nicht einmal meine GUI, das Fenster ist für die Zeit eingefroren, in der die Berechnung läuft. Nachdem die Funktion beendet ist, druckt sie die Ergebnisse auf QLabels, und die GUI ist wieder da "lebendig". Wie kann ich das lösen? Ich will nicht meine GUI "eingefroren" werden, wenn die Berechnung Zeit braucht. Irgendwelche Ideen? Ich dachte über QThread
- aber ich bin irgendwie neu in Threads-Ding, also bitte, geben Einfach-leicht zu verstehende Antworten für Neuling :)
einen Blick auf [diese] Nehmen Sie (https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly- use-qthreads-the-full-Erklärung /). Dann mach deine Berechnung im Thread-Objekt und sende ein Signal, sobald es fertig ist. Verbinden Sie das Signal mit einem Steckplatz in Ihrer Klasse und tun Sie alles, was Sie mit dem Ergebnis tun möchten. –
Und es gibt zwei ':' Semikolons nach 'class myMath' weil ...? – Shoe