Maya Python UI

How do you create drag/dropCallback commands with QtPushButtons so that it can communicate with the Maya shelf? Ideally I want to be able to drag buttons from my UI and drop them onto my Maya Shelf.