2016-08-17 89 views
1

沒有人知道我可以在我的QWidget上實現dragMove事件嗎?所以基本上我想要的是將鼠標移到Widget上,按住鼠標按鈕並將其拖動。拖動時,小部件不應該移動,它應該只在按下鼠標時捕獲鼠標座標。在pyqt5的QWidget上實現dragMoveEvent?

我已經使用了Google,只是找到一些拖放教程,他們已經將東西拖入小部件等文本。這沒有什麼幫助。

回答

0

這什麼都沒有做與拖動。你實際上需要做的是啓用鼠標跟蹤,然後監控鼠標移動事件。

這裏有一個簡單的演示:

from PyQt5 import QtCore, QtGui, QtWidgets 

class Window(QtWidgets.QWidget): 
    def __init__(self): 
     super(Window, self).__init__() 
     self.setMouseTracking(True) 

    def mouseMoveEvent(self, event): 
     if event.buttons() & QtCore.Qt.LeftButton: 
      print(event.globalPos().x(), event.globalPos().y()) 

if __name__ == '__main__': 

    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    window = Window() 
    window.setGeometry(500, 150, 100, 100) 
    window.show() 
    sys.exit(app.exec_()) 
0

我認爲您正在尋找mousePressEvent而不是dragMoveEvent。你會需要繼承QWidget和實施mousePressEvent方法提供的實現:

from PyQt5.QtWidgets import QWidget 

class MyWidget(QWidget): 

    def mousePressEvent(self, event): 
     print(event.pos())