基于QGraphicsView实现的画图软件


画图软件,基于QGraphicsView实现,可画直线,矩形,椭圆,圆角矩形,不规则多边形,曲线等等基本功能,并且可编辑这些图形,代码封装完毕,可简单移植到项目中使用。
资源截图
代码片段和文件信息
#include “commands.h“
#include 
MoveShapeCommand::MoveShapeCommand(QGraphicsScene *graphicsScene const QPointF &delta QUndoCommand *parent)
    : QUndoCommand(parent)
{
    myItem = 0;
    myItems = graphicsScene->selectedItems();
    myGraphicsScene = graphicsScene;
    myDelta = delta;
    bMoved = true;
}

MoveShapeCommand::MoveShapeCommand(QGraphicsItem * item const QPointF &delta QUndoCommand *parent)
    : QUndoCommand(parent)
{
    myGraphicsScene = 0;
    myItem = item;
    myDelta = delta;
    bMoved = true;
}

//! [2]
void MoveShapeCommand::undo()
{
    if ( myItem )
        myItem->moveBy(-myDelta.x()-myDelta.y());
    else if( myItems.count() > 0 ){
        foreach (QGraphicsItem *item myItems) {
           item->moveBy(-myDelta.x()-myDelta.y());
        }
    }
    setText(Qobject::tr(“Undo Move %1%2“)
        .arg(-myDelta.x()).arg(-myDelta.y()));
    bMoved = false;
}
//! [2]

//! [3]
void MoveShapeCommand::redo()
{
    if ( !bMoved ){
        if ( myItem ){
            myItem->moveBy(myDelta.x()myDelta.y());
            myItem->scene()->update();
        }else if( myItems.count() > 0 ){
            foreach (QGraphicsItem *item myItems) {
               item->moveBy(myDelta.x()myDelta.y());
            }
            myGraphicsScene->update();
        }
    }
    setText(Qobject::tr(“Redo Move %1%2“)
        .arg(myDelta.x()).arg(myDelta.y()));
}
//! [3]
//! [4]
RemoveShapeCommand::RemoveShapeCommand(QGraphicsScene *scene QUndoCommand *parent)
    : QUndoCommand(parent)
{
    myGraphicsScene = scene;
    items = myGraphicsScene->selectedItems();
}

RemoveShapeCommand::~RemoveShapeCommand()
{

}
//! [4]

//! [5]
void RemoveShapeCommand::undo()
{
    foreach (QGraphicsItem *item items) {
        QGraphicsItemGroup *g = dynamic_cast(item->parentItem());
        if ( !g )
            myGraphicsScene->addItem(item);
    }
    myGraphicsScene->update();
    setText(Qobject::tr(“Undo Delete %1“).arg(items.count()));
}
//! [5]

//! [6]
void RemoveShapeCommand::redo()
{
    foreach (QGraphicsItem *item items) {
        QGraphicsItemGroup *g = dynamic_cast(item->parentItem());
        if ( !g )
            myGraphicsScene->removeItem(item);
    }
        setText(Qobject::tr(“Redo Delete %1“).arg(items.count()));
}
//! [6]

//! [7]
AddShapeCommand::AddShapeCommand(QGraphicsItem *item
                       QGraphicsScene *scene QUndoCommand *parent)
    : QUndoCommand(parent)
{
    static int itemCount = 0;

    myGraphicsScene = scene;
    myDiagramItem = item;
    initialPosition = item->pos();
    ++itemCount;
}
//! [7]

AddShapeCommand::~AddShapeCommand()
{
    if (!myDiagramItem->scene())
        delete myDiagramItem;
}

//! [8]
void AddShapeCommand::undo()
{
    myGraphicsScene->removeItem(myDiagramItem);
    myGraphicsScene->update();
    setText(Qobject::tr(“Undo Add %1“)
        .arg(createCommandString(myDiagramItem initialPosition)));

}
//! [8]

//! [9]
void AddSha

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-11 13:27  qdraw-master
     文件         242  2017-01-28 23:05  qdraw-master.gitignore
     目录           0  2018-09-11 13:27  qdraw-masterapp
     文件         813  2017-01-28 23:05  qdraw-masterappapp.pro
     文件        1427  2017-01-28 23:05  qdraw-masterappapp.qrc
     文件       10349  2017-01-28 23:05  qdraw-masterappcommands.cpp
     文件        3645  2017-01-28 23:05  qdraw-masterappcommands.h
     目录           0  2018-09-11 13:27  qdraw-masterappdebug
     文件       16038  2018-08-30 09:13  qdraw-masterappdebugmoc_drawobj.cpp
     文件       10106  2018-08-30 09:13  qdraw-masterappdebugmoc_drawscene.cpp
     文件        4330  2018-08-30 09:13  qdraw-masterappdebugmoc_drawview.cpp
     文件       12156  2018-08-30 09:13  qdraw-masterappdebugmoc_mainwindow.cpp
     文件         234  2018-09-07 15:43  qdraw-masterappdebugmoc_predefs.h
     文件        4645  2018-08-30 09:13  qdraw-masterappdebugmoc_rulebar.cpp
     文件    13798400  2018-08-30 09:13  qdraw-masterappdebugqdraw.bsc
     文件      548352  2018-08-30 09:13  qdraw-masterappdebugqdraw.exe
     文件     2905548  2018-08-30 09:13  qdraw-masterappdebugqdraw.ilk
     文件     5001216  2018-08-30 09:13  qdraw-masterappdebugqdraw.pdb
     文件       12628  2018-08-29 16:24  qdraw-masterappdebugqteditorfactory.moc
     文件        4408  2018-08-29 16:24  qdraw-masterappdebugqtpropertymanager.moc
     文件        5945  2018-08-29 16:24  qdraw-masterappdebugqttreepropertybrowser.moc
     文件          50  2017-01-28 23:05  qdraw-masterappdocument.cpp
     文件         108  2017-01-28 23:05  qdraw-masterappdocument.h
     文件       41936  2018-08-29 15:40  qdraw-masterappdrawobj.cpp
     文件       12308  2018-08-29 15:10  qdraw-masterappdrawobj.h
     文件       11402  2018-08-29 14:58  qdraw-masterappdrawscene.cpp
     文件        2315  2018-08-29 14:56  qdraw-masterappdrawscene.h
     文件       16877  2018-08-16 14:59  qdraw-masterappdrawtool.cpp
     文件        2995  2017-01-28 23:05  qdraw-masterappdrawtool.h
     文件        9316  2018-08-29 14:59  qdraw-masterappdrawview.cpp
     文件        1342  2018-08-29 14:54  qdraw-masterappdrawview.h
............此处省略104个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)