I'm not familiar with qt, but it probably has a "time now" function that includes milliseconds. Something like this should then work. You have to calculate how long to sleep until the next multiple of 100 msecs occurs:
int sleep_time()
{
auto now = get_time();
int curr_msecs = now.msecs;
int wakeup_msecs = (now.msecs / 100) + 100;
return wakeup_msecs - now.msecs;
}
while(true)
{
sleep(sleep_time());
generate_report();
}