Ho una semplice interfaccia grafica per la mia applicazione = Devo impostare alcuni parametri di input per la mia funzione matematica, quindi fare clic sul pulsante 'compute', e la funzione inizia. Le funzioni matematiche sono scritte in pura C quindi non ci sono oggetti, solo funzioni.Qt GUI applicazione matematica si blocca GUI durante il calcolo
Ecco come si presenta:
#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
}
Il problema principale di questo codice è che quando scatto 'calcolare' (lo fa talmente tanto di calcolo, ci vogliono fino a 5 minuti o giù di lì) si blocca il mio GUI quindi non posso fare nient'altro (non riesco nemmeno a vedere la mia GUI, la finestra è "congelata" per il tempo in cui il calcolo è in esecuzione. Dopo che la funzione è finita, stampa i risultati su QLabels, e la GUI è ancora una volta "Vivo" Come posso risolvere questo? Non voglio che la mia GUI sia "congelata" quando il calcolo richiede tempo. Qualche idea? Ho pensato a QThread
- ma sono un po 'nuovo in thread-thing, quindi per favore, dai risposte semplici e facili da comprendere per i principianti :)
Date un'occhiata a [questo] (https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly- use-qthreads-the-pieno-spiegazione /). Quindi esegui il calcolo nell'oggetto thread e invia un segnale una volta completato. Collega il segnale a uno slot della tua classe facendo qualsiasi cosa tu voglia fare con il risultato. –
E ci sono due ':' punti e virgola dopo 'classe myMath' perché ...? – Shoe