资源简介
自己用QT模仿了window下的画图软件,编写了一个,大部分功能都实现了
代码片段和文件信息
#include “circle.h“
#include “paintarea.h“
int CCircle::m_circleCount = 0;
CCircle::CCircle()
{
m_circleCount++;
m_circleIndex = m_circleCount;
m_shapeType = PaintArea::MENU_STATUS_CIRCLE_2;
}
void CCircle::drawInfo(QPainter &pt)
{
}
// 保存接口
void CCircle::save(QSettings &fd)
{
// 1.图元的类型
// 2.所有点的位置
// 3.总共几个点
// 4.组名 S-shapeIndex
// 组名
QString group = QString(“C-%1“).arg(m_circleIndex);
// 1.图元的类型
fd.setValue(QString(“%1/type“).arg(group)m_shapeType);
// 2.总共几个点
fd.setValue(QString(“%1/ptCount“).arg(group)m_ptArray.size());\
// 3.具体的点
int i;
for(i = 0; i< m_ptArray.size();i++)
{
fd.setValue(QString(“%1/pt%2“).arg(group).arg(i)
m_ptArray[i]);
}
}
void CCircle::load(QSettings &fd)
{
}
void CCircle::drawShape(QPainter &pt)
{
// 求出半径
m_radius = qSqrt(
(m_ptArray[1].y() - m_ptArray[0].y())*(m_ptArray[1].y() - m_ptArray[0].y())
+
(m_ptArray[1].x() - m_ptArray[0].x())*(m_ptArray[1].x() - m_ptArray[0].x())
);
pt.drawEllipse(m_ptArray[0]m_radiusm_radius);
}
// 捕捉鼠标左键按下去
void CCircle::mousePressEvent(QMouseEvent *event)
{
if(m_clickNum == 0)
{
// 设置第一个点
m_ptArray.push_back(event->pos());
// 假设这个时候第二点和第一个点重合
m_ptArray.push_back(event->pos());
// 改变当前的绘图状态为正在绘图当中
PaintArea::m_curDrawStatus = PaintArea::DRAW_STATUS_DRAWING;
m_clickNum++;
}
else
{
if(m_clickNum == 1)
{
// 设置第2个点
m_ptArray[1] = event->pos();
// 改变当前的绘图状态为准备绘图
PaintArea::m_curDrawStatus = PaintArea::DRAW_STATUS_PREPARE;
m_clickNum++;
}
else
{
if(m_clickNum == 2)
{
if(m_hitCtrlIndex == -1)
{
// 改变当前的绘图状态为拖动或者移动
PaintArea::m_curDrawStatus = PaintArea::DRAW_STATUS_DRAG;
// 记录拖动的原始点
m_lastDragPoint = event->pos();
}
else
{
// 改变当前的绘图状态为改变图元状态
PaintArea::m_curDrawStatus = PaintArea::DRAW_STATUS_CHANGE;
}
}
}
}
}
// 鼠标移动事件
void CCircle::mouseMoveEvent(QMouseEvent *event)
{
switch(PaintArea::m_curDrawStatus)
{
case PaintArea::DRAW_STATUS_PREPARE:
break;
case PaintArea::DRAW_STATUS_DRAWING:
m_ptArray[1] = event->pos();
break;
case PaintArea::DRAW_STATUS_DRAG:
{
QPoint spanPt = event->pos() - m_lastDragPoint;
m_ptArray[0] += spanPt;
m_ptArray[1] += spanPt;
// 记录最新的拖动点
m_lastDragPoint = event->pos();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-09-19 18:05 draw\
目录 0 2016-09-18 23:38 draw\build-draw-未命名-Debug\
文件 5958 2016-09-18 23:18 draw\build-draw-未命名-Debug\Makefile
文件 7726 2016-09-18 23:18 draw\build-draw-未命名-Debug\Makefile.Debug
文件 7885 2016-09-18 23:18 draw\build-draw-未命名-Debug\Makefile.Release
目录 0 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\
文件 448476 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\circle.o
文件 4133597 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\draw.exe
文件 462775 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\line.o
文件 276975 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\main.o
文件 496340 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\mainpaint.o
文件 4293 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\moc_mainpaint.cpp
文件 295935 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\moc_mainpaint.o
文件 2526 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\moc_paintarea.cpp
文件 296687 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\moc_paintarea.o
文件 473763 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\paintarea.o
文件 3016204 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\qrc_res.cpp
文件 590951 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\qrc_res.o
文件 460308 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\rectangle.o
文件 411468 2016-09-18 23:38 draw\build-draw-未命名-Debug\debug\shape.o
文件 211 2016-09-18 23:18 draw\build-draw-未命名-Debug\ob
文件 231 2016-09-18 23:18 draw\build-draw-未命名-Debug\ob
目录 0 2016-09-19 18:09 draw\build-draw-未命名-Debug\release\
文件 13734 2016-09-18 23:38 draw\build-draw-未命名-Debug\ui_mainwin.h
文件 3057 2016-09-18 23:38 draw\build-draw-未命名-Debug\ui_paint.h
文件 4860 2016-09-02 09:21 draw\circle.cpp
文件 852 2016-09-02 08:54 draw\circle.h
文件 372 2016-09-18 23:18 draw\draw.pro
文件 13096 2016-09-19 18:05 draw\draw.pro.user
目录 0 2016-08-30 17:35 draw\image\
文件 1012 2016-08-07 21:53 draw\image\arc.png
............此处省略42个文件信息
相关资源
- Qt循环播放一组图片
- qt环境下使用opencv打开双摄像头并保存
- 用Qt写的一个时间提醒程序源码和可执
- qt modbus 源码 可以作为 modbus 调试助手
- Qt实现notepad记事本源码工程(版本二
- Qt+GDAL图像显示基本功能
- MQTT-ESP8266.rar
- Qt贪吃蛇小游戏代码+详细设计文档
- QT 图片播放器
- QT飞秋通信
- 基于Linux、QT的视频监控系统的设计与
- 文泉驿中英文字体库支持qt4和qt5
- ArcGIS_Runtime_SDK_Qt Guide
- OsgEarth2.8 使用高程和影像
- qt-recordDesktop
- qt学生管理系统内置局域网聊天以及传
- 抓包工具qt 程序
- 基于Qt开发的人事管理系统代码
- 斗地主界面程序Qt5.7版本
- 文泉驿字体库 QT字体库
- QT5各类控件合集包好常用(QML)
- 车牌识别源代码
- QT 电子表格Designer设计版
- 360UI完美界面
- QQ 登录界面 Qt实现
- Qt5实现的俄罗斯方块
- 基于qt5、sftp上传文件
- QtPropertyBrowser
- Qt俄罗斯方块源码亲测通过编译
- Qt 做的俄罗斯方块游戏代码
评论
共有 条评论