资源简介
用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\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
评论
共有 条评论