首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Qt 图片交互-鼠标滚轮放缩、拖拽、选点

后端 7.55KB 13 需要积分: 1
立即下载

资源介绍:

Qt 图片交互——鼠标滚轮放缩、拖拽、选点(工程源代码,编写的库方便使用,包含demo)演示视频:https://www.bilibili.com/video/BV1yv411P7hJ/
#include "hi_graphicsview.h" #include #include "hi_imagebox.h" HI_GraphicsView::HI_GraphicsView(QWidget *parent): QGraphicsView(parent), m_isTranslate(false), m_scene(new QGraphicsScene()), m_imageItem(new QGraphicsPixmapItem()) { m_scene->addItem(m_imageItem); setScene(m_scene); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setRenderHint(QPainter::Antialiasing); setSceneRect(INT_MIN/2, INT_MIN/2, INT_MAX, INT_MAX); setTransformationAnchor(QGraphicsView::AnchorViewCenter); centerOn(0, 0); } HI_GraphicsView::~HI_GraphicsView() { m_scene->deleteLater(); delete m_imageItem; } void HI_GraphicsView::SetImage(const QImage &image) { m_imageItem->setPixmap(QPixmap::fromImage(image)); QPoint newCenter(image.width() / 2 ,image.height()/2); //设置scene中心到图像中点 centerOn(newCenter); show(); } void HI_GraphicsView::wheelEvent(QWheelEvent *event) { // 滚轮的滚动量 QPoint scrollAmount = event->angleDelta(); // 正值表示滚轮远离使用者放大负值表示朝向使用者缩小 scrollAmount.y() > 0 ? ZoomIn() : ZoomOut(); } void HI_GraphicsView::mouseMoveEvent(QMouseEvent *event) { if(m_isTranslate) { //获取 QPointF mouseDelta = event->pos()-m_lastMousePos; Translate(mouseDelta); } m_lastMousePos = event->pos(); QGraphicsView::mouseMoveEvent(event); } void HI_GraphicsView::mousePressEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) { m_isTranslate = true; m_lastMousePos = event->pos(); } else if(event->button()==Qt::RightButton) { QPointF point = mapToScene(event->pos()); //只有点击图片时才发送 if (scene()->itemAt(point, transform()) != NULL) { emit m_imageBox->ImageClick(point.x(),point.y()); } } QGraphicsView::mousePressEvent(event); } void HI_GraphicsView::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) m_isTranslate = false; QGraphicsView::mouseReleaseEvent(event); } void HI_GraphicsView::mouseDoubleClickEvent(QMouseEvent *event) { centerOn(m_imageItem->pixmap().width()/2,m_imageItem->pixmap().height()/2); QGraphicsView::mouseDoubleClickEvent(event); } void HI_GraphicsView::ZoomIn() { Zoom(1.1); } void HI_GraphicsView::ZoomOut() { Zoom(0.9); } void HI_GraphicsView::Zoom(float scaleFactor) { // 防止过小或过大 qreal factor = transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width(); if (factor < 0.07 || factor > 100) return; scale(scaleFactor, scaleFactor); } void HI_GraphicsView::Translate(QPointF delta) { int w = viewport()->rect().width(); int h = viewport()->rect().height(); QPoint newCenter(w / 2. - delta.x()+0.5, h / 2. - delta.y()+0.5); centerOn(mapToScene(newCenter)); }

资源文件列表:

Qt图片交互.zip 大约有13个文件
  1. .gitignore 814B
  2. HI_ImageBox.pro 996B
  3. HI_ImageBox_Demo/
  4. HI_ImageBox_Demo/.gitignore 814B
  5. HI_ImageBox_Demo/HI_ImageBox_Demo.pro 1.29KB
  6. HI_ImageBox_Demo/main.cpp 183B
  7. HI_ImageBox_Demo/mainwindow.cpp 765B
  8. HI_ImageBox_Demo/mainwindow.h 457B
  9. HI_ImageBox_Demo/mainwindow.ui 1.23KB
  10. hi_graphicsview.cpp 3.08KB
  11. hi_graphicsview.h 1.04KB
  12. hi_imagebox.cpp 804B
  13. hi_imagebox.h 1.56KB
0评论
提交 加载更多评论
其他资源 wordpress主题 仿Hao123 网址导航主题
说明: 可直接安装主题,作为单页导航使用,暂无文章页面模板。 还可以用daohang.php当作页面模板使用,集成到现在WP主题中 。 使用方法:(安装前请先备份) 1.直接安装 在后台直接安装主题即可。 2.集成到现在主题。(推荐) 仅需上传daohang.php文件和css文件夹到现在主题目录下。 然后取functions.php中添加挂件和菜单函数,添加到现有主题functions.php中即可。 然后在后台新建页面,使用[网址导航]模板,新建页面仅需填写标题即可。 再设置>阅读>首页显示>一个静态页面(在下方选择)>主页:选择上面建立的页面即可。 3.主题安装或集成后 在后台添加菜单或链接即可,链接请看小工具页面说明。 主题优点: 纯净绿色,仅调用菜单和链接,对网站无任何影响。 无需插件。
GigaDevice_MCU_ISP_Programmer_V3.0.2.5782.zip
GD产品通过串口进行程序下载
基于51单片机的智能电子秤系统设计(含代码仿真及论文)
论文见主页文章http://t.csdn.cn/IurRu!!!! 本设计以STC89C52RC单片机为主控单元,使用8 位AD转换芯片 ADC0832对采集到的模拟量进行A/D转换,转换后的数据送到单片机进行处理显示,数据显示由 LCD12864 液晶实现。具有以下特点:称重范围为0~5Kg,误差不大于±0.005Kg;具备测量物体质量并通过显示模块显示的功能;能够通过物体的单价计算出物体数量的总价格;具备去皮功能,方便计算物体的实际重力;当测量重量超出报警阈值时,蜂鸣进行过载报警。 通过实验验证,本文设计的基于51单片机的智能电子秤系统具有较高的精度和稳定,满足了商业、家庭和实验室等领域的需求,具有较强的实用价值和广阔的应用前景。 关键词:51单片机;智能电子秤;称重传感器;误差分析
计算机网络自顶向下方法第八版答案
自顶向下方法第八版答案,包括复习题以及课后习题和实验的内容。
计算机网络自顶向下方法第八版答案 计算机网络自顶向下方法第八版答案 计算机网络自顶向下方法第八版答案
自己写的stm32f103的ov7670摄像头程序
stm32103vet6+ov7670+fifo 摄像头程序,基于3.5库,移植于红牛开发板(2.0库)屏幕代码采用奋斗mini代码(注意:屏幕程序用的是奋斗老板子的屏幕驱动,新板子要自己修改), 修改了mini的屏幕画线代码(原代码有问题)。 程序预留出触摸屏程序接口和串口程序接口,可以试着修改。 程序未集成sdcard程序,有待改进。
Tomcat 6.0软件下载
Tomcat 6.0软件下载,直接解压就能用,不用安装,在myeclipse中配置一下它的路径就可以了
雷电模拟器9改真机环境.zip
面具magisk开启root,雷电模拟器上模拟真机环境。该压缩包,包括了模拟器(雷电模拟器9.exe),面具,RE管理器(Root_Explorer-v4.10.3-by_Alphaeva.apk),机型模组(iPhone12机型模块_magisk,LSPosed-v1.8.6-6909-zygisk-release,OPPOR9s机型模块_magisk,OXF-AN00机型模块_magisk,SM-N9760机型模块_magisk,vivoPD1728机型模块_magisk)。 A 安装面具 B 刷入机型压缩包,重启生效 C 机型更改app 可以制作机型压缩包,可以导出云机型压缩包
flex的组织结构图组件
flex的组织结构图组件