(7) 重写QLabel以鼠标点处缩放图片

本文介绍了如何重写QLabel来实现鼠标点击位置图片缩放的效果。通过设置初始点为(0,0),然后根据鼠标点击的x坐标计算缩放比例,调整图片的位置,从而达到在鼠标点击处放大图片的目的。" 124393900,9495060,pyTorch实战:线性模型与梯度下降,"['深度学习', 'pytorch', '回归', '神经网络']
摘要由CSDN通过智能技术生成

小试牛刀,话不多说,先看图:
在这里插入图片描述
原理:初始点(0,0)画图,图片scale缩放,鼠标点x(1+缩放倍数)=图片内坐标,初始画图点反方向移动(鼠标点x缩放倍数的距离),可看到鼠标点处缩放效果。

MyLabel.h

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QObject>
#include <QLabel>
#include <QMouseEvent>
#include <QWheelEvent>
#include <QPainter>
#include <QDebug>

class MyLabel:public QLabel
{
   
public:
    MyLabel(QWidget *parent=nullptr);

protected:
    void paintEvent(QPaintEvent *) override;
    void mouseMoveEvent(QMouseEvent *ev) override;
    void mousePressEvent(QMouseEvent *ev) override;
    void mouseReleaseEvent(QMouseEvent *ev) override;
    void wheelEvent(QWheelEvent *event) override;
    void resizeEvent(QResizeEvent *event) override;
    void changeWheelValue(QPoint event,int value);
private:
    double m_scaleValue;      // 图片缩放倍数
    QPointF m_drawPoint;      // 绘图起点
    QPointF m_mousePoint;     // 鼠标当前位置点
    QRect m_rectPixmap;       // 被绘图片的矩形范围
    bool m_isMousePress;      // 鼠标是否按下

    const double EPS = 1e-6;  // 双精度浮点数比较
    const double SCALE_VALUE=0.02;
    const double SCALE_MAX_VALUE=2.0;
    const double SCALE_MIN_VALUE
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值