实现思路:

 把每次动作/事件压栈或者弹出。

直接代码

class LoadCommand :public QUndoCommand {
private:
    XXModel * xModel;
    int old;
    int new;
    
    QWidget* mWins;
public:
    LoadICommand(QWidget* widget, XXModel * model, int val);

    void redo() override;
    void undo() override;
};

//////////////////////////////////////////////////////////////
LoadCommand::LoadICommand(QWidget* widget, XXModel * model, int val): val(val), XXModel(model), QWidget(widget) 
{
/*新操作发生时 载入撤回or重做指令,压栈*/
/*读取原有属性*/
}

void LoadImgEditConfigCommand::redo()
{
/*读取原有属性*/
/*把目标值写入模型*/
}

void LoadImgEditConfigCommand::undo()
{
/*读取原有属性*/
/*把目标值写入模型*/
}

 

相关文章: