Also, dass ich keine GUI-Elemente direkt ansprechen kann, mag ja noch verständlich sein. Aber wenn dieser Signal&Slots Mechanismus über Threads funktioniert, dann müsste es doch eigentlich gehen, wenn ich aus dem Arbeitsthread ein Signal im Hauptthread aufrufe und dort das Widget aktualisiere? Denn ansonsten wäre es wirklich unmöglich, Zwischenzustände anzuzeigen? Das kann ich mir irgendwie nicht vorstellen.In practice, the impossibility of using GUI classes in other threads than the main thread can easily be worked around by putting time-consuming operations in a separate worker thread and displaying the results on screen in the main thread when the worker thread is finished.
Mein Momentaner Ansatz geht etwa so:
Code: Alles auswählen
std::streamsize ConsoleWidgetStream::write(const char* s, std::streamsize n)
{
emit m_Target.Write(std::string(s, (int)n));
return n;
}
Wie kann ich das lösen/umgehen?