1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include "signalwait.h"
#include <QCoreApplication>
#include <QElapsedTimer>
SignalWait::SignalWait(QObject* object, const char* signal) :
QObject()
{
connect(object, signal, this, SLOT(handleSignal()));
}
bool SignalWait::wait(int msTimeout)
{
QElapsedTimer timer;
timer.start();
while (!called && !failed && timer.elapsed() < msTimeout)
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
if (failed)
return false;
return called;
}
void SignalWait::reset()
{
called = false;
}
void SignalWait::addFailSignal(QObject* object, const char* signal)
{
connect(object, signal, this, SLOT(handleFailSignal()));
}
void SignalWait::handleSignal()
{
called = true;
}
void SignalWait::handleFailSignal()
{
failed = true;
}
|