zoukankan      html  css  js  c++  java
  • 实现图形的整体移动、放大、缩小

    目前加载一副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视图框架真是强大,这些功能,轻松调用几个接口就搞定了。

  • 相关阅读:
    ubuntu c++ 关机 重启 挂起 API
    Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
    机器学习: Logistic Regression--python
    机器学习:朴素贝叶斯--python
    理解YOLOv2训练过程中输出参数含义
    darknet YOLO 编译使用GPU
    机器学习:决策树--python
    Xmodem通信协议实例
    MQTT协议笔记之连接和心跳
    Android实现推送方式解决方案
  • 原文地址:https://www.cnblogs.com/spplus/p/5357211.html
Copyright © 2011-2022 走看看