当前位置: 首页 > news >正文

网站开发公司建站源码网页开发需求定制

网站开发公司建站源码,网页开发需求定制,网站移动端是什么问题,海螺集团网站建设招标公告文章目录 源码地址,环境:QT5.15,MinGW32位效果演示导入图片设置剪裁区域创建剪裁小窗口重写剪裁小窗口的鼠标事件mousePressEventmouseMoveEventmouseReleaseEvent 小窗口移动触发父窗口的重绘事件剪裁效果实现 源码地址,环境&…

文章目录

  • 源码地址,环境:QT5.15,MinGW32位
  • 效果演示
  • 导入图片
  • 设置剪裁区域
  • 创建剪裁小窗口
  • 重写剪裁小窗口的鼠标事件
    • mousePressEvent
    • mouseMoveEvent
    • mouseReleaseEvent
  • 小窗口移动触发父窗口的重绘事件
  • 剪裁效果实现

源码地址,环境:QT5.15,MinGW32位

效果演示

在这里插入图片描述
在这里插入图片描述

导入图片

    QPixmap m_srcPix;QPixmap m_scaledPix;//从文件导入图片m_srcPix.load("D:\\Jolly\\A_0voice_chat\\chapter_explanation\\PictureEdit_demo\\PictureEdit\\images\\1.png");//把导入的图片截取到窗口大小m_scaledPix = m_srcPix.scaled(ui->label->width(), ui->label->height());//在窗口显示图片ui->label->setPixmap(m_scaledPix);

设置剪裁区域

    //裁剪头像活动窗口//设置透明this->setWindowFlags(Qt::FramelessWindowHint);//设置矩形区域,整个窗口this->setGeometry(0, 0, parentWidget()->width(), parentWidget()->height());CutDialog *m_cutDialog;//头像剪切窗口m_cutDialog = new CutDialog(this);m_cutDialog->show();

创建剪裁小窗口

CutDialog::CutDialog(QWidget *parent) :QWidget(parent)
{setGeometry(0,0, 150, 150);m_mouseDown = false;
}

重写剪裁小窗口的鼠标事件

mousePressEvent

void CutDialog::mousePressEvent(QMouseEvent *event)
{//获取鼠标按下时的位置m_startPoint = event->pos();//判断按下的是否是鼠标左键m_mouseDown = event->button() == Qt::LeftButton;
}

mouseMoveEvent

要是没有启用鼠标追踪,mouseMoveEvent 只有在鼠标按键被按下并且鼠标移动时才会触发,而且是在mousePressEvent触发之后。
当启用鼠标追踪后,不管鼠标按键是否被按下,只要鼠标移动,mouseMoveEvent就会触发

void CutDialog::mouseMoveEvent(QMouseEvent *event)
{//获取鼠标移动以后的位置QPoint dragPoint = event->pos();if (m_mouseDown) {//pos保存小部件在其父部件中的位置QPoint p = QPoint(//pos() 是对话框在父窗口中的左上角坐标//dragPoint - m_startPoint 计算鼠标移动的偏移量//原理: 拖动点相对于对话框的位置保持不变(如从(10,10)点开始拖动,移动后仍抓住该点)pos().x()+dragPoint.x() - m_startPoint.x(), // 水平方向pos().y()+dragPoint.y()-m_startPoint.y()    // 垂直方向);QPoint dragEndge = p;dragEndge.setX(p.x() + rect().width());   // 对话框右下角X坐标dragEndge.setY(p.y() + rect().height());  // 对话框右下角Y坐标//左上角约束,保证小窗口左上角在父窗口范围内p.setX(p.x() < 0 ? 0 : p.x());p.setY(p.y() < 0 ? 0 : p.y());//右下角约束// 确保右下角X ≤ 父窗口宽度p.setX(dragEndge.x() > parentWidget()->width()? parentWidget()->width() - rect().width(): p.x());// 确保右下角Y ≤ 父窗口高度p.setY(dragEndge.y() > parentWidget()->height()? parentWidget()->height() - rect().height(): p.y());//QWidget::move() 对窗口部件的位置进行设置move(p);
/*
move函数原型
void move(int x, int y);
void move(const QPoint &pos);*/}}

mouseReleaseEvent

释放鼠标时将m_mouseDown 设置为false,避免鼠标右键或其他案件误触发mouseMoveEvent

void CutDialog::mouseReleaseEvent(QMouseEvent *event)
{m_mouseDown = false;
}

小窗口移动触发父窗口的重绘事件

paintEvent调用时机:

​​首次显示窗口时​​
当 PhotoShotDialog 首次显示(例如通过 show() 或 exec())时,系统会自动触发 paintEvent 进行初始绘制。

​​窗口需要重绘时​​
窗口被其他窗口遮挡后重新暴露出来
窗口内容发生变化(如子窗口移动、尺寸变化)
调用 update() 或 repaint() 方法强制重绘

​​子窗口移动时(关键)​​
当用户拖动 CutDialog时:
CutDialog::mouseMoveEvent() 中调用了 move§ 移动裁剪框
移动操作会​​自动触发父窗口(PhotoShotDialog)的重绘​​,因为:
子窗口位置变化导致父窗口的可见区域需要更新
系统自动发送重绘事件到父窗口

void PhotoShotDialog::paintEvent(QPaintEvent *event)
{QPainterPath painterPath;QPainterPath p;p.addRect(x(),y(),this->rect().width(), this->rect().height()); //裁剪头像活动窗口 (蓝色矩形)//QWidget::geometry()返回一个 QRect 对象。这个对象包含了窗口部件的位置和大小信息painterPath.addRect(m_cutDialog->geometry()); //头像剪切窗口 (紫色矩形)QPainterPath drawPath = p.subtracted(painterPath); //subtracted 获取除了painterPath区域以外的窗口QPainter painter(this);painter.setOpacity(0.6); //设置Qt控件透明度 0表示全透明,1表示不透明painter.fillPath(drawPath, QBrush(Qt::black));
}

剪裁效果实现

void PictureEdit::on_pushButton_clicked()
{//直接复制小窗口的图像内容QPixmap pix = m_scaledPix.copy(m_psDialog->getCutGeometry());//将截图内容重命名,并保存到指定目录pix.save("D:\\work\\workspace\\qtstudyspace\\PictureEdit\\images\\cut.png", "png");
}
http://www.dtcms.com/a/416460.html

相关文章:

  • 湘潭网站建设 皆来磐石网络免费中文网站模板
  • 花都网站 建设信科网络templatemonster wordpress
  • 网站积分方案虹桥门户网
  • ESP32-S3入门第七天:UART串口通信与设备交互
  • 营销软件网站建设网站优化效果怎么样
  • 解码编程语言:穿越技术迷宫的指南【2】
  • 网站编程语言网站开发语言有哪几种
  • 狮山网站制作做设计比较好的网站
  • 简单美食网站模板免费下载开源手机网站建站系统
  • 网站公司 模板网站设计与网页制作公司
  • 一个网站备案多个域名吗建设通好用吗
  • wordpress手机站如何做网页的制作
  • 怎样做收费网站微信公众号和微网站
  • 个人怎么做ckmov解析网站小视频网站建设
  • 国外网站模版免费下载阿里巴巴如何建设网站首页
  • 建设网站排名海外营销网络
  • 网站设计文字超链接网络个性化定制
  • 网站建设结论推广优化厂商联系方式
  • 抚州 提供网站建站 公司制作网站教程视频
  • js 网站校验网络维护工程师工资多少
  • 字体排版设计网站莆田联客易外贸网站建设推广
  • Web浏览器存储技术指南:从LocalStorageQ到OPFS搞定网页数据存储难题
  • 网站建设设计问卷中国纪检监察报官网
  • 做外国网站百度搜到下载网站怎么下载
  • 高端网站建设哪家公司好游戏下载网站 wordpress
  • 智慧社区解决方案-1PPT(46页)
  • 阿里云购买域名后怎么建网站网站建设公司ejiew
  • 做pc端网站效果优秀学校网站模板
  • 素材图库网站源码专业做传奇网站解析
  • 阳江做网站公司绵阳网站建设工作室