当前位置: 首页 > news >正文

C#如何做简易网站app下载安装注册

C#如何做简易网站,app下载安装注册,湖南建设银行官网网站首页,梓潼网站建设目录 1. Command 概览 2. Command2D 1. Command 概览 功能#xff1a;命令栈基类#xff0c;用来实现撤销和重做功能。 其子类Command2D和Command3D都是实现父类方法#xff0c;除了构造函数没有自己的独有方法。 字段#xff1a; redoCommands#xff1a;存储re…目录 1. Command 概览   2. Command2D 1. Command 概览   功能命令栈基类用来实现撤销和重做功能。 其子类Command2D和Command3D都是实现父类方法除了构造函数没有自己的独有方法。 字段 redoCommands存储redo重做命令栈其实就是QStackQString undoCommands存储undo撤销命令栈。 方法 logAdd记录添加标注logDelete记录删除标注logMove记录移动标注logChange记录更改标注undo撤销功能redo重做功能 #ifndef COMMAND_H #define COMMAND_H #includeQStack #includeNamespace.h/// \brief 命令栈基类用来实现撤销和重做功能 class My::Command{public:/// \brief 存储undo撤销命令栈QStackQString undoCommands;/// \brief 存储redo重做命令栈QStackQString redoCommands;/// \brief 记录添加标注virtual void logAdd(int index);/// \brief 记录删除标注virtual void logDelete(int index,int id);/// \brief 记录移动标注virtual void logMove(int index,float xoffset,float yoffset,int id0);/// \brief 记录更改标注virtual void logChange(int index,QString s1,QString s2);/// \brief 撤销功能virtual void undo();/// \brief 重做功能virtual void redo();virtual ~Command()0; // 将其声明为纯虚函数强制要求任何继承自 Command 的类都要提供自己的析构函数实现。 };#endif // COMMAND_H2. Command2D 继承自Command类 字段多了一个manager存放中心组件指针CentralWInit2D* manager中心窗口 方法和父类一样。 /*! * \file command2d.cpp * \brief 2d命令栈类 * \author 王澳 * \date 2019.09 */#includeCommand2D.h #includeLabel.h #includemainwindow.h #includeQObject/// \brief 2d中心组件的记录添加 将添加标注的操作记录到命令栈中以便后续进行撤销。 void My::Command2D::logAdd(int index){ // 表示添加标注的索引QString sQString(Add %1).arg(index); // s表示添加标注的命令undoCommands.push_back(s);redoCommands.clear(); // 在执行新的命令时清空之前可能存在的可以重做的命令。 }/// \brief 2d中心组件的记录删除 将删除标注的操作记录到命令栈中以便后续进行撤销操作。 void My::Command2D::logDelete(int index,int id){ // index表示删除标注的索引。id表示删除标注的唯一标识符.QString sQString(Delete %1 %2).arg(index).arg(id);undoCommands.push_back(s);redoCommands.clear(); }/// \brief 2d中心组件的记录移动 将移动标注的操作记录到命令栈中以便后续进行撤销操作。 void My::Command2D::logMove(int index,float xoffset,float yoffset,int id){QString sQString(Move %1 %2 %3).arg(index).arg(xoffset).arg(yoffset);undoCommands.push_back(s);redoCommands.clear(); }/// \brief 2d中心组件的记录改变 记录了标注的改变操作。当用户改变标注的文字时 void My::Command2D::logChange(int index,QString s1,QString s2){QString sQString(Change %1 %2 %3).arg(index).arg(s1).arg(s2);undoCommands.push_back(s); // 格式是类似于 Change index oldLabel newLabelredoCommands.clear(); }/// \brief 2d中心组件的撤销动作 包含4中操作Add, Delete, Move, Change void My::Command2D::undo(){if(undoCommands.count()0)return;// 获取最近一次的命令记录。QString sundoCommands.top();undoCommands.pop_back();QStringList lists.split( ); // 使用空格作为分隔符将命令字符串拆分为列表// 执行一次undo函数只撤销一个命令。if(list[0]Add){ // 命令格式Add index// 将形状移至 trashshapes 并更新 redoCommands 堆栈int indexlist[1].toInt();manager-trashshapes.append(manager-label-shapes[index]);manager-label-shapes.removeAt(index);QString strQString(Add %1 %2).arg(index).arg(manager-trashshapes.length()-1);redoCommands.push_back(str); // 执行撤销命令后有反悔药。// 发送删除label信号通知其他组件emit(manager-labelDeleted(index));manager-label-update(); // 并更新 label 小部件}if(list[0]Delete){ // 命令格式Delete index id// 从 trashshapes 中检索形状并插入回 label-shapes因为上一步删除后形状会放置在trashshapesint indexlist[1].toInt();int idlist[2].toInt();manager-label-shapes.insert(index,manager-trashshapes[id]);QString strQString(Delete %1).arg(index);redoCommands.push_back(str);emit(manager-labelAdded(manager-trashshapes[id],index));manager-label-update();}if(list[0]Move){ // 移动标注命令格式Move index xoffset yoffsetint indexlist[1].toInt();float xoffset0;float yoffset0;xoffset-list[2].toFloat(); // 减去offset就回到之前的位置。yoffset-list[3].toFloat();manager-label-shapes[index]-offset(xoffset,yoffset); // 形状对象修改自己的位置信息QString strQString(Move %1 %2 %3).arg(index).arg(-xoffset).arg(-yoffset);redoCommands.push_back(str);manager-label-update();}if(list[0]Change){ // 标注类别的改变命令格式Change index oldLabel newLabelint indexlist[1].toInt();QString s1list[2]; // oldLabelQString s2list[3];manager-label-shapes[index]-labels1; // 形状的属性label类别名称redoCommands.push_back(s);emit(manager-labelChanged(index,manager-label-shapes[index]));manager-label-update();} }/// \brief 2d中心组件的重做动作 void My::Command2D::redo(){if(redoCommands.count()0)return;QString sredoCommands.top();redoCommands.pop_back();QStringList lists.split( );if(list[0]Add){int indexlist[1].toInt();int idlist[2].toInt();manager-label-shapes.insert(index,manager-trashshapes[id]);QString strQString(Add %1).arg(index);undoCommands.push_back(str);emit(manager-labelAdded(manager-trashshapes[id],index));manager-label-update();}if(list[0]Delete){int indexlist[1].toInt();manager-trashshapes.append(manager-label-shapes[index]);int idmanager-trashshapes.length()-1;manager-label-shapes.removeAt(index);QString strQString(Delete %1 %2).arg(index).arg(id);undoCommands.push_back(str);emit(manager-labelDeleted(index));manager-label-update();}if(list[0]Move){int indexlist[1].toInt();float xoffsetlist[2].toFloat();float yoffsetlist[3].toFloat();manager-label-shapes[index]-offset(xoffset,yoffset);QString strQString(Move %1 %2 %3).arg(index).arg(xoffset).arg(yoffset);undoCommands.push_back(str);manager-label-update();}if(list[0]Change){int indexlist[1].toInt();manager-label-shapes[index]-labellist[3];undoCommands.push_back(s);emit(manager-labelChanged(index,manager-label-shapes[index]));manager-label-update();} }
http://www.pierceye.com/news/746599/

相关文章:

  • 典当行 网站威海网站推广
  • 佛山市住房建设局网站网站开发业务ppt
  • 页面结构和页面设计优化措施二十条
  • 做网站程序怎么写wordpress漂浮表单
  • 企业网站要怎么建设网站建设 工具
  • wordpress 邮箱激活宁波营销型网站建设优化建站
  • 婚纱网站页面设计广州网站建设推广公司有哪些
  • 网站制作报价大约建设模式有哪些
  • 公司邮箱怎么注册流程如何优化关键词提升相关度
  • 网站建议方案app代运营
  • 北京建机官网查询台州seo全网营销
  • 网站建设书店用户分几类网站建设项目采购公告
  • 如何做企业网站宣传wordpress站内搜索次数
  • 加盟招商推广网站如何做品牌运营与推广
  • 网站做分布式部署湖南平台网站建设设计
  • 沈阳市建设工程项目管理中心网站网络项目网
  • 沈阳网站建设成创输入网址跳到别的网站
  • 课程网站开发建设商务网站的费用
  • 资讯网站优化排名wordpress 删除所有文章
  • 旅游海外推广网站建设方案wordpress外观无法编辑
  • 品牌手表网站网站推广律师关键词有哪些
  • 卖视频会员个人网站怎么做推广网站的图片怎么做
  • 服务器关闭 网站被k微信公众号推广的好处
  • 工业设计招聘信息网站做网站首页轮播图代码
  • 央企网站开发手机网站 input
  • 千里马招标网站东莞网站推广行者seo08
  • 网络工程专业主要学什么百度seo课程
  • 网站定制开发收费标准是多少网站导航功能
  • 东莞网站(建设信科网络)公众号小程序开发公司
  • dw网站结构图怎么做4399电脑版网页链接