Qt Undo Framework

本篇主要目的是测试使用sublime text 2 + markdown 发布cnblog

测试结果:非常好用啊有木有!!!所以连文章末尾的logo我都决定给人家保留!!!

20130225 鬼猫猫 翻译http://www.cnblogs.com/muyr/

在线阅读:Qt DevDays2007 TheQtUndo-Redo_framework.pdf

下载:Qt DevDays2007 TheQtUndo-Redo_framework.pdf

DevDays2007

Qt undo/redo 框架

  • 基于Command设计模式
  • 支持命令压缩和命令合成
  • 提供了与工具包其他部分融合很好的widgets和actions

术语(Terminology)

  • Command - 对文档的一个作用行为,比如
    • 图像编辑器的模糊操作
    • 文本处理器的剪切操作
      • 采样编辑器的最大化操作
  • Undo-stack - commands的堆栈
  • Document - 被应用程序编辑的内部数据,比如
    • 音频编辑器中的waveform(波形)
    • 图像编辑器中的bitmap(位图)

基本的undo stack操作

  • Push

    Qt Undo Framework_第1张图片

  • Undo

    Qt Undo Framework_第2张图片

  • Redo

    Qt Undo Framework_第3张图片

注意,push可能会删掉一些操作,如图

Qt Undo Framework_第4张图片

类们

只有四个类!

  • QtUndoCommand - 用于修改document的对象的基类

  • QtUndoStack - QtUndoCommand对象的堆栈

  • QtUndoGroup - undo堆栈的组。很多应用程序允许用户同时打开超过一个文档,该类允许你把一组undo堆栈按一单个stack对待。

  • QtUndoView - 继承自QListWidget,用来展示undo堆栈的内容,以字符串形式

实例

前提说明:下面这个例子,我们将为一个文本编辑器实现undo/redo;文档我们就用一个简单的QString来代表;我们先实现文档中插入字符这样一个command

commands的实现

插入字符操作

class InsertChars : public QUndoCommand 
{
public:
    InsertChars(int index, 

你可能感兴趣的:(markdown,设计模式)