我有一个工人类,它位于自己的线程中,与GUI线程分开。在worker类中,我有一个包含do-while循环的方法。我试图这样做,所以点击GUI上的按钮就会提前摆脱循环。到目前为止我所拥有的:
Class Worker : public QObject {
...
public slots:
void process();
private slots:
void killLoop(){killLoopFlag =true;}
private:
bool killLoopFlag;
};//end class declaration
connect(ui->stopButton,SIGNAL(clicked()),worker,SLOT(killLoop()));
//qDebug confirms this connection works.
void process(){
killLoopFlag = false; //SOLUTION. Was bool killLoopFlag before.
do {//stuff
QApplication::processEvents();
if (killLoopFlag ==true){break;}
} while (//othercondition);
在process()方法中killLoopFlag
未设置为true。我错过了什么?
编辑:KillLoopFlag
在process()
的开头变为红色。删除了bool
,一切都很好