这是我用Qt。
编写的代码片段bool myFunc()
{
.......
while(!tcpCommunicator->isLoginReplyExist)
{
qApp->processEvents(QEventLoop::AllEvents);
}
.......
return tcpCommunicator->res;
}
“isLoginReplyExist”被我希望退出循环的程序的另一部分改变后,有没有更好的方法来实现这个目的?
感谢。
答案 0 :(得分:2)
如果myFunc()是某个类的方法(例如Class1),则可以从QObject继承此类并定义插槽:
Class1 : public QObject
{
Q_OBJECT
...
public slots:
void mySlot(bool tcpResult);
...
}
更改tcpCommunicator状态(Class2)的对象应该有信号:
Class2 : public QObject
{
Q_OBJECT
...
signals:
void tcpChangedTo(bool);
...
}
最后你应该连接信号和插槽。因此,当更改tcpCommunicator时,将执行mySlot(bool res)。如果Class1和Class2对象在不同的线程中工作,则在将信号连接到插槽时应使用Qt :: QueuedConnection类型。