pyqt5中QWidget上实现dragMoveEvent?

问题描述 投票:0回答:2

有谁知道如何在我的 QWidget 上实现 DragMove 事件?所以基本上我想要的是将鼠标移动到小部件上按住鼠标按钮并拖动它。拖动时,小部件不应移动,它应仅在按下鼠标时捕获鼠标坐标。

我已经在谷歌上搜索过,只是找到了一些拖放教程,他们将一些东西拖到了小部件等中,比如文本。这并没有多大帮助。

python user-interface pyqt pyqt5 qwidget
2个回答
3
投票

这与拖动无关。您实际需要做的是启用鼠标跟踪,然后监视鼠标移动事件。

这是一个简单的演示:

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())
© www.soinside.com 2019 - 2024. All rights reserved.