В ожидании изменения переменной - PullRequest
1 голос
/ 29 сентября 2010

Вот мой фрагмент кода, написанный на Qt.

bool myFunc()
{
  .......
  while(!tcpCommunicator->isLoginReplyExist)
  {             
    qApp->processEvents(QEventLoop::AllEvents);
  }
  .......
  return tcpCommunicator->res;
}

После изменения "isLoginReplyExist" другой частью программы, которую я хочу выйти из цикла, есть ли лучший способ сделать это?

Спасибо.

1 Ответ

2 голосов
/ 11 октября 2010

если 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 при подключении сигнала к слоту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...