Witam,
oficjalna dokumentacja Qt(przykład z kalkulatorem)
http://doc.qt.io/qt-5/qtwidgets-widgets-calculator-example.html
Zamiast bezpośrednio rzutować na dany typ możesz użyć
QSignalMapper http://doc.qt.io/qt-5/qsignalmapper.html
Ewentualnie wbudowanego do Qt szablonu qobject_cast<QObject>()
Zamiast
QPushButton * button = (QPushButton*)sender();
Można użyć
QPushButton *button = qobject_cast<QPushButton*>(sender());
if(button)
{
//udana konwersja
}
else
{
//nie udana konwersja
}
Ogólnie dobrze kombinujesz z tą flagą. Wykonaj program w trybie Debug wtedy będziesz mógł analizować zmienne i zachowanie programu.
https://www.youtube.com/watch?v=B7UsWtyhXh4&t=8s