实现撤销功能的思想

实现撤销功能的时候,有一个大致的思想是,先写:

1.一个保存的方法

2.一个读取的方法

让后再在需要撤销和恢复的地方,使用这两个方法,当然数据是存储在缓存中去的;

事先定义:

    '撤消恢复保存
    Public Const RedoMax = 100
    Public LastRedo(RedoMax + 1) As String, LastRedoMode(RedoMax / 2) As Boolean, CurrentP As Integer, SavedMax As Integer
保存方法:

    ' 撤销保存
    Public Sub RedoSave(ByVal s1 As String)
        Dim i1 As Integer
        ' 保存处理:已达上限和未达上限
        If pTFile = RedoMax Then
            For i1 = 1 To RedoMax - 1
                LastRedo(i1) = LastRedo(i1 + 1)
            Next
            LastRedo(RedoMax) = s1
            CurrentP = RedoMax
        Else
            CurrentP = CurrentP + 1
            LastRedo(CurrentP) = s1
        End If
        '最大保存量
        If SavedMax < CurrentP Then
            SavedMax = CurrentP
        ElseIf SavedMax > CurrentP Then
            For i1 = CurrentP + 1 To RedoMax
                LastRedo(i1) = ""
            Next
            SavedMax = CurrentP
        End If
    End Sub
读取方法:

    Public Sub RedoRead(ByRef s1 As String, ByVal RedoMode As Integer)
        If RedoMode = 1 Then
            If CurrentP < RedoMax Then
                CurrentP = CurrentP + 1 'Redo
            Else
                Exit Sub
            End If
        ElseIf RedoMode = 2 Then
            If CurrentP > 1 Then
                CurrentP = CurrentP - 1 'Undo
            Else
                Exit Sub
            End If
        End If
        If CurrentP Mod 2 = 0 Then
            LastRedoMode(CurrentP / 2) = False
        ElseIf CurrentP Mod 2 = 1 Then
            LastRedoMode(CurrentP / 2) = True
        End If
        If LastRedoMode(CurrentP / 2) = False AndAlso RedoMode = 2 Then
            CurrentP = CurrentP - 1 ' CurrentP减1处理
            s1 = LastRedo(CurrentP) ' 减1恢复
        ElseIf LastRedoMode(CurrentP / 2) = True AndAlso RedoMode = 1 Then
            CurrentP = CurrentP + 1 ' CurrentP加1处理
            s1 = LastRedo(CurrentP) ' 加1恢复
        Else
            s1 = LastRedo(CurrentP) ' 正常恢复
        End If
    End Sub

基于上面的两个方法,当在进行编辑操作的时候,调用保存的方法;

在进行恢复的时候,调用读取的方法;

通过以上两个方法,就可以进行撤销和恢复了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我会详细介绍Qt的画板程序的功能模块和页面的设计思想实现方法。 1. 主界面设计 画板程序的主界面是整个程序的核心,主要包括画板区域和工具栏。其中,画板区域可以实现涂鸦和绘图功能,而工具栏则包括了各种绘图工具和颜色选择器等。主界面的设计需要考虑到用户的操作习惯和易用性。 2. 绘图功能模块 绘图功能模块是画板程序的核心模块,它包括了各种绘图工具,如画笔、直线、矩形、椭圆等。在实现绘图功能时,需要考虑到用户的操作习惯和实时预览效果,可以采用鼠标拖拽等方式实现。 3. 颜色选择器模块 颜色选择器模块是画板程序的辅助模块,它可以帮助用户选择所需的颜色。在实现颜色选择器时,可以采用颜色选择面板或者颜色滑动条等方式,同时需要考虑到颜色的实时预览效果。 4. 文件操作模块 文件操作模块是画板程序的重要模块,它可以帮助用户保存和打开所绘制的图形。在实现文件操作模块时,需要考虑到文件格式的兼容性和文件的保存位置等问题。 5. 撤销和重做模块 撤销和重做模块是画板程序的辅助模块,它可以帮助用户撤销和重做所做的操作。在实现撤销和重做模块时,需要考虑到操作的顺序和效率等问题。 以上就是Qt画板程序中各个功能模块和页面的设计思想实现方法的简要介绍,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值