1.
首先知道undo和redo动作的创建。
这两个动作是由QUndoStack创建的。
当点击undo或者redo的时候,qt框架就自动调用QUndoStack中处于栈顶位置的QUndoCommand命令。
QAction *unDO = m_undoStack->CreateAction( this,tr("undo") );
QAction *reDO = m_undoStack->CreateAction( this,tr("redo") );
2.
主窗口中增加一个item。比如addBox
QUndoCommand *addCommand = new AddCommand(DiagramItem::Box, diagramScene);//创建了一个addCommand
undoStack->push(addCommand);//调用QUndoStack的redo()方法 将一个addCommand添加到undoStack中,这样才调用了addcommand的redo()方法。
首先创建相应的QUndoCommand命令,然后将该QUndoCommand命令添加到undoStack中,这个push()方法会导致,该QUndoCommand命令的redo()方法被调用。
3.
AddCommand::AddCommand(DiagramItem::DiagramType addType,
QGraphicsSce