首页 文章

在pyqt5中的QWidget上实现dragMoveEvent?

提问于
浏览
1

有谁知道如何在我的QWidget上实现dragMove事件?基本上我想要的是将鼠标移到Widget上按住鼠标按钮并拖动它 . 拖动时,不应移动窗口小部件,只应在鼠标按下时捕获鼠标坐标 .

我已经google了,只是找到一些拖放教程,他们已经把东西拖进了一个小部件等文本 . 这不是真的有用 .

2 回答

  • 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())
    

相关问题