为了通过设置标志(然后从线程内返回)来启动停止线程,我需要与它通信。
线程是这样实现的
MyClass* obj = new MyClass(0);
connect( this,SIGNAL( stop() ),obj, SLOT(stop()));
emit stop(); // slot is called (qDebug output)
MyThread = new QThread;
obj->moveToThread(MyThread);
connect( ... started() ... quit() ... finished() ... deleteLater() ...
....
emit stop(); // slot isn't called (qDebug output)
该插槽还没有任何逻辑,它只是使用 qDebug() 输出。对象创建和连接发生在主窗口方法中。
不幸的是,我无法弄清楚我做错了什么:一旦将对象移动到线程,插槽就不再运行。