擅长:python、mysql、java
<p>这取决于你想做什么。如果你想做真正的“拖放”,那你就错了。你所做的只是在它的父对象的X,Y坐标空间中移动按钮。它从未真正调用任何拖放事件,它们完全不同。</p>
<p>您应该在此处阅读拖放文档:</p>
<p><a href="http://doc.qt.nokia.com/4.7-snapshot/dnd.html" rel="nofollow">http://doc.qt.nokia.com/4.7-snapshot/dnd.html</a><br/>
<a href="http://qt-project.org/doc/qt-5.0/qdrag.html" rel="nofollow">http://qt-project.org/doc/qt-5.0/qdrag.html</a></p>
<p>您需要创建一个新的QDrag对象并执行它,而不是在mousePressEvent中移动按钮。通过使用QPixmap::grabWidget方法对按钮进行快照并使用QDrag::setPixmap方法将其分配给QDrag实例,可以使其看起来像您的按钮。</p>
<p>如果您只想在父空间中移动小部件,我建议您使用此框架并只接受按钮的drop事件。那你就不会触发一堆不必要的重画。</p>