В Qt есть такие типы событий:
QEvent::Enter
Mouse enters widget's boundaries.
QEvent::Leave
Mouse leaves widget's boundaries.
Так вот чтоб сделать анимированую кнопку ты можешь просто установить фильтр событий для кнопки, который будет перехватывать эти два события (в классе, который будет перехватывать события надо переопределить функцию eventFilter()) или наследоваться от кнопки и в своем классе Animated_Button переопределить функцию event() которая будет ловить эти события и делать соотвествующие изменения на батоне.