Code: Alles auswählen
QFuture<int> f1 = QtConcurrent::run(&someClassInstance, &SomeClass::doWork, someParameter);
f1.waitForFinished();
// oder
int result = f1.result();
Üblicherweise würde man in doWork(...) ein Signal senden, wenn man fertig ist, dieses im Hauptthread wieder auffangen und dann weiterarbeiten. Das bedeutet dann auch, dass man alle Funktionen, die den obigen Codeschnipsel aufrufen, per Signal/Slot verbinden muss. Das geht, ist aber mit einem gewissen Aufwand verbunden und wie ich finde beim Lesen des Codes auch weniger transparent als ein Code, der in geschlossener Form arbeitet.
Ich meine, solch einen nicht blockierenden Aufruf wie oben beschrieben gibt's nicht. Falls ich da falsch liege, würde ich mich über eine Idee freuen, wie man's umsetzen kann.