-
大小: 14KB文件類型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-06-06
- 語言: 其他
- 標(biāo)簽: 鼠標(biāo)拖動(dòng)??拖動(dòng)??
資源簡介
用Qt鼠標(biāo)事件實(shí)現(xiàn)基本幾何圖形的繪制,支持直線、矩形、圓形、橢圓。后期可以在此基礎(chǔ)上進(jìn)行擴(kuò)展。使用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;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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\gstempcanvasla
?????文件?????????797??2019-05-27?20:01??GraphicShapes\gstempcanvasla
?????文件?????????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\gsshapeba
?????文件?????????562??2019-07-01?11:57??GraphicShapes\shape\gsshapeba
?????文件?????????891??2019-07-01?11:54??GraphicShapes\shape\gsshapeba
?????文件????????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
評論
共有 條評論