by Guest » 03 Jan 2025, 10:44
Code: Select all
#define DEBUG qDebug()thread->quit();
d->thread->wait();
delete d->thread;
delete d;
}
Warum nur „Thread beendet“ ausgeben, wenn ich Qt::DirectConnection spezifiziere, wenn ich Mainwindow schließe? Aber wenn es Qt::QueuedConnection ist, wird es nicht.
Für Qt::DirectConnection kann ich das verstehen, wenn der d->Thread das Finish ausgibt Signal wird der Druck sofort im untergeordneten Thread ausgeführt. Bei Qt::QueuedConnection hingegen wird dieses Objekt, das MainWindow ist, im Hauptthread gedruckt. Das Signal wird am Ende der Ereigniswarteschlange platziert und nur verarbeitet, wenn die Ereignisschleife es verarbeitet.
C++17, Qt 5.15.2, Windows 11, CPU I7 13700, RAM 16G
[code]#define DEBUG qDebug()thread->quit();
d->thread->wait();
delete d->thread;
delete d;
}
[/code]
Warum nur „Thread beendet“ ausgeben, wenn ich Qt::DirectConnection spezifiziere, wenn ich Mainwindow schließe? Aber wenn es Qt::QueuedConnection ist, wird es nicht.
Für Qt::DirectConnection kann ich das verstehen, wenn der d->Thread das Finish ausgibt Signal wird der Druck sofort im untergeordneten Thread ausgeführt. Bei Qt::QueuedConnection hingegen wird dieses Objekt, das MainWindow ist, im Hauptthread gedruckt. Das Signal wird am Ende der Ereigniswarteschlange platziert und nur verarbeitet, wenn die Ereignisschleife es verarbeitet.
C++17, Qt 5.15.2, Windows 11, CPU I7 13700, RAM 16G