UID:153582
UID:7394
dbzhang800:因为你的run() 内加了一个while循环啊!!要么去掉那句exec() ,要么通过其他方式让其退出exec() (2014-11-06 15:27)
UID:112079
bazzi2011:抱歉,我错了,去掉exec()的确退出了,但在线程执行期间却没有办法防止重复点击按钮啊???我点一下按钮,在输出数字的过程中再次点击按钮,if(workerThread->isRunning())这句代码不起作用啊??? (2014-11-06 15:39)
uidab:把按钮变灰 (2014-11-06 15:46)
UID:123401
bazzi2011:我也想过这个办法啊,但线程中不是不能操控ui么?如果在按钮中第一句 ui->pushButton->setEnabled(false); 那么我何时才能将其再置为可用呢?也就是说我怎样才能知道run已经运行完毕了呢? (2014-11-06 15:51)
realfan:在click中,将按钮变灰。connect(workerThread, SIGNAL(finished()), this, SLOT(OnThreadFinished()));关联线程的finished信号,收到信号后,再将按钮变为可用。 (2014-11-06 16:40)
UID:136309
bazzi2011:我明白了!当run()函数中的代码运行完成之后,线程就自动结束, 无需再手动exit(0),对吧?还有一个问题,如果我想要线程回传给主窗口一些数据,是不是要自己写一个信号Myfinished(int)、然后在run()函数最后一句发出emit Myfinished(整型)才可以实现? (2014-11-07 09:48)