Ошибся я слегка. Замени
int delay = alarm.msecsTo(QTime::currentTime());
на
int delay = QTime::currentTime().msecsTo(alarm);
и все должно быть нормально для любого времени
поправил уже сам, когда увидел в дебаге отрицательные числа
спасибо вам большое за помощь, all works! =)