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

如何在网站上做免费代理购物商城网站建设多少钱

如何在网站上做免费代理,购物商城网站建设多少钱,校园网站建设申请,勐海县住房和城乡建设局网站目录 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.yutouwan.com/news/388100/

相关文章:

  • 网站开发众筹做网页需要什么软件
  • 校园门户网站建设方案网站做淘宝客有什么要求
  • 开发做一个网站需要多少钱做网站开源框架
  • 义乌做网站广州城市职业学院门户网站
  • dwcc如何做网站做电影网站需要注意什么东西
  • 企业网站建设公司电话西安网站建设get你
  • 顺的网络做网站好不好网站空间数据库需要多大
  • 展示型网站有哪些地方门户网站赚钱吗
  • 文本文档做网站个人wordpress
  • 自己电脑做网站做门面商铺比较好的网站
  • 网站所需的主要功能受和攻不停的做漫画网站
  • 网站建设给客户看的ppt模板仿xss网站搭建
  • 重庆网站建设的公司网站开发培训成都
  • 网站通栏广告设计p2p网站建设cms
  • 网站编程培训学校有哪些网店建设方案
  • 专业的东莞网站推广国内搜索引擎
  • 如何查看网站建设时间如何投诉做网站的公司
  • 美食网站开发的目标广告设计培训班课程
  • 网站怎么注销备案号wordpress吗
  • 企业产品展示网站模板上海移动云网站建设
  • 自己做的网站如何放到微信深圳装饰企业前50强
  • 阿里云云主机做网站wordpress 优化版本
  • ps做图 游戏下载网站网站的域名从哪里购买
  • 做电影网站用什么主机好新网站的建设工作
  • 网站开发教育培训怎么做房地产网站
  • 备案中网站打不开自学网站推荐
  • wordpress发消息宁波市网站排名优化
  • 做网站什么类型好别墅设计师排名
  • 襄阳网站建设公司自建站排名
  • 沈阳响应式网站制作wordpress 瀑布流