• 大小: 14KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 鼠标拖动  拖动  

资源简介

用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。使用QGraphics完成。 博客地址:https://blog.csdn.net/luoyayun361/article/details/93890331

资源截图

代码片段和文件信息

#include “gsmainscene.h“
#include 
#include 
#include 
#include 
#include “gsshapebaseitem.h“

GsMainScene::GsMainScene(const QSizeF &size Qobject *parent)
    : QGraphicsScene(QRectF(0 0 size.width() size.height()) parent)
{
    m_pRootItem = new GsRootItem(size);
    addItem(m_pRootItem);
    QPixmapCache::setCacheLimit(204800);
}

GsMainScene::~GsMainScene()
{
}

void GsMainScene::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
    scenePress(1e->scenePos());
    QGraphicsScene::mousePressEvent(e);
}

void GsMainScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
    sceneMove(1e->lastScenePos()e->scenePos());
    QGraphicsScene::mouseMoveEvent(e);
}

void GsMainScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
{
    sceneRelease(1e->scenePos());
    QGraphicsScene::mouseReleaseEvent(e);
}

void GsMainScene::keyPressEvent(QKeyEvent *e)
{
    switch (e->key()) {
    case Qt::Key_1:
        m_pRootItem->setCurType(Shape_Line);
        break;
    case Qt::Key_2:
        m_pRootItem->setCurType(Shape_Rectange);
        break;
    case Qt::Key_3:
        m_pRootItem->setCurType(Shape_Circle);
        break;
    case Qt::Key_4:
        m_pRootItem->setCurType(Shape_Oval);
        break;
    case Qt::Key_Up:
        m_pRootItem->setScale(m_pRootItem->scale() + 0.1);
        break;
    case Qt::Key_Down:
        m_pRootItem->setScale(m_pRootItem->scale() - 0.1);
        break;
    case Qt::Key_Delete:
        m_pRootItem->clear();
        break;
    default:
        break;
    }
}

bool GsMainScene::scenePress(int id const QPointF &pos)
{
    if(!isHitItem(pos)){
        m_pRootItem->drawPress(idpos);
    }
    return true;
}

bool GsMainScene::sceneMove(int id const QPointF &prepos const QPointF &pos)
{
    m_pRootItem->drawMove(idprepospos);
    return true;
}

bool GsMainScene::sceneRelease(int id const QPointF &pos)
{
    m_pRootItem->drawRelease(idpos);
    return true;
}

bool GsMainScene::isHitItem(QPointF p)
{
    QList items = this->items(p);
    foreach (QGraphicsItem * itemitems) {
        GsShapebaseItem * i = dynamic_castseItem*>(item);
        if(!i){
            continue;
        }
        if(i->type() == Type_ShapeItem){
            if(i->hasSelected(p)){
                return true;
            }
            return true;
        }
    }
    return false;
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-07-01 13:46  GraphicShapes\
     文件        1606  2019-06-06 11:20  GraphicShapes\GraphicShapes.pro
     文件         456  2019-05-27 20:04  GraphicShapes\gscommondef.h
     文件        2523  2019-07-01 11:56  GraphicShapes\gsmainscene.cpp
     文件         837  2019-07-01 11:53  GraphicShapes\gsmainscene.h
     文件        2397  2019-06-18 16:23  GraphicShapes\gsrootitem.cpp
     文件        1258  2019-06-06 11:07  GraphicShapes\gsrootitem.h
     文件        1574  2019-05-27 20:32  GraphicShapes\gsshapeitem.cpp
     文件         664  2019-06-06 10:46  GraphicShapes\gsshapeitem.h
     文件        1944  2019-06-17 18:23  GraphicShapes\gstempcanvaslayer.cpp
     文件         797  2019-05-27 20:01  GraphicShapes\gstempcanvaslayer.h
     文件         492  2019-05-27 17:09  GraphicShapes\main.cpp
     目录           0  2019-07-01 11:57  GraphicShapes\shape\
     文件         597  2019-07-01 11:50  GraphicShapes\shape\gsshapebaseitem.cpp
     文件         562  2019-07-01 11:57  GraphicShapes\shape\gsshapebaseitem.cpp.autosave
     文件         891  2019-07-01 11:54  GraphicShapes\shape\gsshapebaseitem.h
     文件        1006  2019-07-01 11:50  GraphicShapes\shape\gsshapecircleitem.cpp
     文件         486  2019-06-06 11:45  GraphicShapes\shape\gsshapecircleitem.h
     文件         911  2019-06-18 10:11  GraphicShapes\shape\gsshapefactory.cpp
     文件         370  2019-06-06 11:06  GraphicShapes\shape\gsshapefactory.h
     文件        1293  2019-07-01 11:52  GraphicShapes\shape\gsshapelineitem.cpp
     文件         472  2019-07-01 11:52  GraphicShapes\shape\gsshapelineitem.h
     文件         849  2019-06-06 16:58  GraphicShapes\shape\gsshapeovalitem.cpp
     文件         474  2019-06-06 11:45  GraphicShapes\shape\gsshapeovalitem.h
     文件         823  2019-06-17 18:29  GraphicShapes\shape\gsshaperectangeitem.cpp
     文件         496  2019-06-06 11:45  GraphicShapes\shape\gsshaperectangeitem.h

评论

共有 条评论