Qt QGraphicsview缩放及还原
Qt 还原 缩放
2023-09-14 09:07:11 时间
本文主要介绍通过QGraphicsview实现简单的缩放,以及缩放后还原原始大小,
1,自定义一个drawview继承QGraphicsview,缩放主要实现的函数为
void scale(qreal sx,qreal sy);
通过scale可以对view进行放大或缩小。
则可以在drawview中定义缩放slots为
void drawview::zoomIn(qreal delta)
{
zoom(delta);
}
void drawview::zoomOut(qreal delta)
{
zoom(1/delta);
}
void drawview::zoom(float scaleFactor)
{
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
qreal factor = transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width();
if (factor < 0.01 || factor > 2000)
return;
scale(scaleFactor, scaleFactor);
}
2,在mainwindows中引用drawview中的缩放函数
void MainWindow::ZoomIn()
{
myview->zoomIn(1.2);
qDebug()<<"zoomin";
}
void MainWindow::ZoomOut()
{
qDebug()<<"zoomOut";
myview->zoomOut(1.2);
}
3,还原原始大小
在看代码之前,我们可以先了解一下QMatrix,
可以看到QMatrix包含有6个参数,具体可以查看文档,简单来说
m11 - 水平缩放
m12 - 垂直拉伸
m21 - 水平拉伸
m22 - 垂直缩放
dx - 水平位移
dy - 垂直位移
通过这些参数,我们可以知道我们所需要调节的只有m11和m22,则把这两个参数设为1,
void MainWindow::Original()
{
myview->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
QMatrix q;
q.setMatrix(1,myview->matrix().m12(),myview->matrix().m21(),1,myview->matrix().dx(),myview->matrix().dy());
myview->setMatrix(q,false);
}
相关文章
- Qt框架简介
- C++QT常见面试题[通俗易懂]
- QT(C++)面试总结
- qt交叉编译环境搭建_arm linux gcc
- qtabwidget tab样式_qt geometry
- C/C++ Qt 自定义Dialog对话框组件应用
- Qt官方示例-书评展示
- Qt官方示例-Qml之ListView
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- Linux下开发Qt应用程序的技术指南(Linux和qt)
- 卸载Linux下的Qt:步骤与指南(linuxqt卸载)
- 在Linux上体验Qt的魅力(linux下运行qt)
- 开发Linux下用Qt开发:简单易用的开发方式(linux用qt)
- 使用Qt快速连接MySQL数据库(qt连接mysql)
- 「零基础入门」Linux下安装QT教程,助力程序员成为高手!(linux下安装qt教程)
- 使用 Linux Qt 开发计算器(linuxqt计算器)
- 解决Qt连接MySQL的问题(qt连接不上mysql)
- 的整合『使用 Qt 与MySQL实现创新性的数据库应用』(qt与mysql)
- 使用QT操作MySQL数据库(qt的mysql数据库)
- 探索Linux世界:体验Qt桌面之美(linux桌面qt)
- QT实现对Oracle数据库的操作教程(qt操作oracle)
- Qt在Linux内核中的应用及解析(qtlinux内核)
- Linux环境下如何卸载Qt应用(linux卸载qt)
- Qt 5 与 MySQL 数据库联合使用:简单高效的开发实践(qt 5 mysql)
- Qt与SQLServer结合,提升开发效率(qt和sqlserver)
- MySQL与Qt的无缝连接(mysql 连接qt)
- Linux下安装Qt操作指南(linux下怎么安装qt)