38 #include <boost/lexical_cast.hpp>
44 bool waitForQueuedSignal(QObject*
object,
const char* signal,
int maxWaitMilliSeconds,
bool silentAtArrive)
48 bool signalArrived = !listener.
timedOut();
49 std::string feedback = signalArrived ?
" arrived." :
" did NOT arrive. Timed out. ";
51 std::cout <<
"[QueuedSignalListener] " << signal << feedback << std::endl;
58 createTimer(maxWaitMilliSeconds);
59 createEventLoop(
object, signal);
71 int retval = mLoop->exec();
80 void QueuedSignalListener::quit()
82 mTimedOut = (this->sender() == mTimer);
87 void QueuedSignalListener::createTimer(
int maxWaitMilliSeconds)
90 mTimer->setInterval(maxWaitMilliSeconds);
91 QObject::connect(mTimer, SIGNAL(timeout()),
this, SLOT(quit()));
94 void QueuedSignalListener::createEventLoop(QObject*
object,
const char* signal)
96 mLoop =
new QEventLoop;
97 QObject::connect(
object, signal,
this, SLOT(quit()));
virtual ~QueuedSignalListener()
QueuedSignalListener(QObject *object, const char *signal, int maxWaitMilliSeconds=100)
int exec()
runs the eventloop that makes sure signals are sent
bool waitForQueuedSignal(QObject *object, const char *signal, int maxWaitMilliSeconds, bool silentAtArrive)
Object that waits for a signal to arrive from a given QObject. If this takes longer than a given time...