欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

qt场景中视图QGraphicsView的缩放

发布时间:2024/9/27 编程问答 11 豆豆
生活随笔 收集整理的这篇文章主要介绍了 qt场景中视图QGraphicsView的缩放 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

继承QGraphicsView自定义视图,重写wheelevent()事件,在滚轮事件中实现视图的放大和缩小。
放大缩小的主要代码:

void GraphicsView::wheelEvent(QWheelEvent *e) {if(!m_isScroll){return ;}if (e->modifiers() & Qt::ControlModifier){qreal curScale = m_scale;if (e->delta() > 0)//远离{if(curScale < upLimit){zoomInView();}}else{if(curScale > lowLimit){zoomOutView();}}e->accept();}else{QGraphicsView::wheelEvent(e);}emit sinalScaleRatio(m_scale); } void GraphicsView::zoomInView() {if(m_scale>3)return;m_lastScale = m_scale;scale(1.0/m_scale,1.0/m_scale);//这样可以在百分之百的基础上每次放大10%m_scale = m_scale + 0.1;emit sinalScaleRatio(m_scale);//发送每次放大的比值scale(m_scale,m_scale); }void GraphicsView::zoomOutView() {if(m_scale<0.3)return;m_lastScale = m_scale;scale(1.0/m_scale,1.0/m_scale);m_scale = m_lastScale - 0.1;emit sinalScaleRatio(m_scale);scale(m_scale,m_scale); }

每次的缩放比可以通过下面的方法实现显示

void chunzhongForm::slot_displayScaleRatio(qreal scale) {m_scale = scale;int ratio = m_scale * 100;QString strScale = QString::number(ratio) + "%";ui->valuePercentBtn->setText(strScale);//显示缩放比 }

以上是主要的代码,仅供思路的参考。

总结

以上是生活随笔为你收集整理的qt场景中视图QGraphicsView的缩放的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。