Are you sure Visual Studio removes moc_* files when you "clean" the project ? I'd suggest using the cmd, this way you'll know for sure if project is cleaned properly. I can't see anything wrong in this code.
Btw. if you want to provide custom button class, consider subclassing the QPushButton, rather than QObject, and connect the "clicked()" signal in your derived class' constructor to some slot where you'll handle the command execution.
It is more sensible, IMHO, to call for example
Qt Code:
  1. MenuButton * button = ...
  2. ...
  3. layout->addWidget( button );
To copy to clipboard, switch view to plain text mode 
than
Qt Code:
  1. MenuButton * button = ...
  2. ...
  3. layout->addWidget( button->pButton );
To copy to clipboard, switch view to plain text mode 
Furthermore, you can use "promote to" feature of the designer this way.