Ich habe eine Anwendung, in der 20 verschiedene Klassen verwendet werden. Die Programmausführung beginnt im Hauptfenster. Ich starte einen Fortschrittsdialog. Ich werde verschiedene Klassen für verschiedene Zwecke verwenden. Nach jedem Funktionsaufruf, bei dem die Ausführung in die jeweilige Klasse geht und die erforderliche Aufgabe erledigt und zur Hauptfenster-Klasse zurückkehrt, aktualisiere ich den Fortschrittsdialog. Das Problem ist nun, dass der Fortschrittsdialog einfriert, wenn die Ausführung von der Hauptfenster-Klasse weggeht. Auf die Schaltfläche "Abbrechen" kann nicht zugegriffen werden, so dass die Ausführung nicht zum gewünschten Zeitpunkt beendet werden kann.
mainclass::mainclass() {
ProgressDialog->exec();
x->add();
updateProgressDialog();
y->do();
updateProgressDialog();
zz->bring();
updateProgressDialog();
}
// x, y, z sind drei verschiedene Klassen.
So läuft die Ausführung ab. Sobald ich die Funktion in der Hauptklasse eingebe, starte ich den Fortschrittsdialog. und rufe Funktionen aus verschiedenen Klassen auf. Die Funktionen nehmen viel Zeit in Anspruch. Ich habe einen Thread aufgerufen, um den Ausführungsteil zu erledigen, aber ich bin nicht in der Lage, den Fortschrittsdialog zu beenden. Ich möchte, dass die Programmausführung gestoppt wird, wenn die Schaltfläche "Abbrechen" im Fortschrittsdialog gedrückt wird.
Bitte lassen Sie mich wissen, wie ich dieses Problem lösen kann. Ich hoffe, ich bin hier klar.