資源簡介
基于QT QGraphicsView Framework的繪圖軟件,可以繪制常見的直線、矩形、圓、橢圓等圖形,可以實現圖形的交互如碰撞檢測、控制手柄拖動縮放、撤銷重做等。還有屬性樹的用法

代碼片段和文件信息
#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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......???????242??2017-01-28?23:05??qdraw-master\.gitignore
????.......???????813??2017-01-28?23:05??qdraw-master\app\app.pro
????.......??????1427??2017-01-28?23:05??qdraw-master\app\app.qrc
????.......?????10349??2017-01-28?23:05??qdraw-master\app\commands.cpp
????.......??????3645??2017-01-28?23:05??qdraw-master\app\commands.h
????.......?????17161??2017-01-28?23:05??qdraw-master\app\customproperty.cpp
????.......??????3143??2017-01-28?23:05??qdraw-master\app\customproperty.h
????.......????????50??2017-01-28?23:05??qdraw-master\app\document.cpp
????.......???????108??2017-01-28?23:05??qdraw-master\app\document.h
????.......?????41867??2017-01-28?23:05??qdraw-master\app\drawobj.cpp
????.......?????12333??2017-01-28?23:05??qdraw-master\app\drawobj.h
????.......?????11388??2017-01-28?23:05??qdraw-master\app\drawscene.cpp
????.......??????2313??2017-01-28?23:05??qdraw-master\app\drawscene.h
????.......?????16877??2017-01-28?23:05??qdraw-master\app\drawtool.cpp
????.......??????2995??2017-01-28?23:05??qdraw-master\app\drawtool.h
????.......??????9292??2017-01-28?23:05??qdraw-master\app\drawview.cpp
????.......??????1338??2017-01-28?23:05??qdraw-master\app\drawview.h
????.......??????2951??2017-01-28?23:05??qdraw-master\app\icons\align_all.png
????.......??????1009??2017-01-28?23:05??qdraw-master\app\icons\align_bottom.png
????.......??????1229??2017-01-28?23:05??qdraw-master\app\icons\align_hcenter.png
????.......??????2256??2017-01-28?23:05??qdraw-master\app\icons\align_height.png
????.......??????1505??2017-01-28?23:05??qdraw-master\app\icons\align_height.svg
????.......???????355??2017-01-28?23:05??qdraw-master\app\icons\align_horzeven.png
????.......??????1192??2017-01-28?23:05??qdraw-master\app\icons\align_left.png
????.......??????1141??2017-01-28?23:05??qdraw-master\app\icons\align_right.png
????.......??????1199??2017-01-28?23:05??qdraw-master\app\icons\align_top.png
????.......??????1223??2017-01-28?23:05??qdraw-master\app\icons\align_vcenter.png
????.......???????344??2017-01-28?23:05??qdraw-master\app\icons\align_verteven.png
????.......??????2001??2017-01-28?23:05??qdraw-master\app\icons\align_width.png
????.......??????1777??2017-01-28?23:05??qdraw-master\app\icons\align_width.svg
............此處省略325個文件信息
評論
共有 條評論