Ich habe ein einfaches QObject
:Was passiert in Qt mit einem Objekt, wenn ein Thread fertig ist?
class Engine : public QObject
{
Q_OBJECT
public:
explicit Engine(QObject* parent = 0);
signals:
void finished();
public slots:
void start();
};
Eine Instanz Engine* engine
innerhalb des Hauptfensters Klasse gespeichert wird. Wenn eine Taste gedrückt wird, geschieht Folgendes:
QThread* thread = new QThread;
engine->moveToThread(thread);
connect(engine, SIGNAL(error(QString)), this, SLOT(errorString(QString)));
connect(thread, SIGNAL(started()), engine, SLOT(start()));
connect(engine, SIGNAL(finished()), thread, SLOT(quit()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
Meine Frage ist, was nach thread
Oberflächen zu engine
passiert? Kann ich einen anderen Thread erstellen und engine
in diesen Thread verschieben und alles noch einmal wiederholen?
Beachten Sie, dass die Verbindungen zum vorherigen Thread immer noch vorhanden sind, es sei denn, Sie löschen den Thread oder trennen die Verbindung manuell. –
Wenn ich 'Engine' in einen anderen Thread verschiebe, gibt es (wieder) einen Fehler, der besagt" Kann nicht zum Ziel-Thread wechseln ". Sollte ich 'Engine' irgendwie vom vorherigen Thread trennen? –