有谁知道如何在我的QWidget上实现dragMove事件?基本上我想要的是将鼠标移到Widget上按住鼠标按钮并拖动它 . 拖动时,不应移动窗口小部件,只应在鼠标按下时捕获鼠标坐标 .
我已经google了,只是找到一些拖放教程,他们已经把东西拖进了一个小部件等文本 . 这不是真的有用 .
这与拖动无关 . 您实际需要做的是启用鼠标跟踪,然后监视鼠标移动事件 .
这是一个简单的演示:
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_())
我认为你正在寻找mousePressEvent而不是dragMoveEvent . 你需要子类 QWidget 并实现 mousePressEvent 方法,提供你的实现:
QWidget
mousePressEvent
from PyQt5.QtWidgets import QWidget class MyWidget(QWidget): def mousePressEvent(self, event): print(event.pos())
2 回答
这与拖动无关 . 您实际需要做的是启用鼠标跟踪,然后监视鼠标移动事件 .
这是一个简单的演示:
我认为你正在寻找mousePressEvent而不是dragMoveEvent . 你需要子类
QWidget
并实现mousePressEvent
方法,提供你的实现: