使用鼠标事件来实现拖拽

其中涉及到的知识点

使用到的鼠标事件:

  • mousedown:按下任意按钮是触发
  • mousemove:当鼠标指针在元素内部移动时重复触发
  • mouseup:释放鼠标按钮时触发

页面坐标位置:

  • pageX;pageY 这两个属性表示鼠标光标在页面中的位置,因此坐标是从页面本身而非视口的左边和顶点计算的。
<div style="position:absolute; cursor:pointer; width: 100px; height:100px; background-color: red; left:0; top:0;">

    </div>
    <div style="position:absolute; cursor:pointer; width: 100px; height:100px; background-color: black; left:110px; top:0;">

    </div>
    <script>
        var div1 = document.getElementsByTagName("div")[0];
        var div2 = document.getElementsByTagName("div")[1];
        document.addEventListener("keyup",function(eve){   // 按回车键开始执行
            if(event.keyCode == 13){
                drag(div1);
                drag(div2);
            }
        });
        function drag(elem) {       // 封装拖拽功能
            var disX, disY;
            var handle = function (e) {         // 使用addEventListstener添加的事件监听,只能使用同一引用值的函数的removeEventListstenner删除
                var event = e || window.event;
                elem.style.left = e.pageX - disX + "px";
                elem.style.top = e.pageY - disY + "px";
            };
            elem.addEventListener("mousedown", function (e) {
                var event = e || window.event;
                disX = e.pageX - parseInt(elem.style.left);     // 在这里定义disX 和 disY 是捕捉鼠标在div上点击的那个点
                disY = e.pageY - parseInt(elem.style.top);      // 注意要转码 elem.style.left 是带有单位px的字符串
                document.addEventListener("mousemove", handle);
            });
            document.addEventListener("mouseup", function (e) {
                document.removeEventListener("mousemove",handle);
            });
        };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PyQt实现鼠标右键拖拽图片平移的简单示例代码: ```python from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView class ImageViewer(QGraphicsView): def __init__(self, parent=None): super(ImageViewer, self).__init__(parent) # 创建场景 self.scene = QGraphicsScene(self) self.setScene(self.scene) # 加载图像 self.image = QPixmap('image.png') # 添加图像到场景 self.image_item = self.scene.addPixmap(self.image) # 开启拖拽模式 self.setDragMode(QGraphicsView.ScrollHandDrag) # 重写鼠标按下事件 self.mousePressEvent = self.on_mouse_press_event # 重写鼠标移动事件 self.mouseMoveEvent = self.on_mouse_move_event def on_mouse_press_event(self, event): # 如果是鼠标右键按下,则记录鼠标位置 if event.button() == Qt.RightButton: self.last_mouse_pos = event.pos() else: super().mousePressEvent(event) def on_mouse_move_event(self, event): # 如果是鼠标右键移动,则计算偏移量并移动图像 if event.buttons() == Qt.RightButton: offset = event.pos() - self.last_mouse_pos self.image_item.moveBy(offset.x(), offset.y()) self.last_mouse_pos = event.pos() else: super().mouseMoveEvent(event) if __name__ == '__main__': app = QApplication([]) viewer = ImageViewer() viewer.show() app.exec_() ``` 在这个示例中,我们重写了鼠标按下和鼠标移动事件。如果用户按下鼠标右键,则记录鼠标位置。在移动鼠标时,如果鼠标右键处于按下状态,则计算偏移量并移动图像。最后,我们将所有其他鼠标事件委托给父类处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值