What about to handle it in your timer, like this?
@
button->setEnabled(false);
if(button->isDown()) {
button->setDown(false);
button_released(); // or maybe emit released if you are in button subclass?
}
@