1
私はシンプルQObject
を持っている:Qtでは、スレッドが終了するとオブジェクトはどうなりますか?
class Engine : public QObject
{
Q_OBJECT
public:
explicit Engine(QObject* parent = 0);
signals:
void finished();
public slots:
void start();
};
インスタンスEngine* engine
は、メインウィンドウクラスの内部に格納されています。ボタンを押すと、次の処理が行われます。
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();
私の質問はthread
終了後engine
に何が起こるか、ですか?別のスレッドを作成してengine
をそのスレッドに移動して、すべてをもう一度繰り返すことはできますか?
スレッドを破棄したり、手動で切断したりしない限り、前のスレッドへの接続はそこに残ることに注意してください。 –
'Engine'を別のスレッドに移動すると、(再び)「対象のスレッドに移動できません」というエラーが表示されます。私は何らかの方法で前のスレッドから 'Engine'を外すべきでしょうか? –