What you need to do is instead pass in a valid reference to a QObject (per Chris' comment above)
Your code works fine if I simply replace the parameter passed into QPropertyAnimation:
// ui->pushButton is a QPushButton*
QPropertyAnimation *animation = new QPropertyAnimation(ui->pushButton, "size");
animation->setDuration(1000);
QSize test = this->size();
animation->setStartValue(test);
animation->setEndValue(QSize(test.width()+100,test.height()+100));
animation->start();
I'm going to assume that you're subclass-ing QPushButton (explains this->icon())... perhaps you can try to access it directly instead? Though I'm going to guess that it's privately owned by the base/parent class.