目前加载一副svg图形已经完成,并且已经把svg图形解析成item对象。下一步需要实现整幅图形的移动、放大、缩小。
一:实现放大缩小功能:
通过QGraphicsView的scale方法,实现整view的放大缩小:
void GraphicsView::zoomOut() { m_scale += m_interal; QMatrix oldMatrix = this->matrix(); this->resetMatrix(); this->translate(oldMatrix.dx(), oldMatrix.dy()); this->scale(m_scale, m_scale); } void GraphicsView::zoomIn() { m_scale -= m_interal; QMatrix oldMatrix = this->matrix(); this->resetMatrix(); this->translate(oldMatrix.dx(), oldMatrix.dy()); this->scale(m_scale, m_scale); } void GraphicsView::zoomHome() { m_scale = 1.0; QMatrix oldMatrix = this->matrix(); this->resetMatrix(); this->translate(oldMatrix.dx(), oldMatrix.dy()); this->scale(m_scale, m_scale); }
二:实现增幅图形拖动功能
void MainWindow::setViewModel() { QGraphicsView::DragMode md; QIcon icon; if (m_viewModelAction->data().toInt() == QGraphicsView::NoDrag) { md = QGraphicsView::ScrollHandDrag; m_viewModelAction->setIcon(QIcon(":images/hand.png")); } else { md = QGraphicsView::NoDrag; m_viewModelAction->setIcon(QIcon(":images/pointer.png")); } m_viewModelAction->setData(md); m_view->setDragMode(md); }
通过设置QGraphicsview的拖拽方式,轻松实现。支持两种拖拽模式:
1.橡皮筋拖拽选择
该拖拽模式是否通过鼠标进行拖拽多选,绘图的时候适合。
2.滚动拖拽选择
该多种模式是整幅图形移动,适合浏览图形。
QT视图框架真是强大,这些功能,轻松调用几个接口就搞定了。