'Can we use multiple stack in Qt's Undo Framework (Command Pattern )
I am having a QgraphicsView which contains multiple QGraphicsItem. I have some features like zoom-in, zoom-out, Hide - Unhide selected item, Undo-Redo.
To implement Undo-Redo feature, I am using Qt's Undo framework ( Command Pattern).
I want to separate out Undo-Redo feature of zoom-in/out with Undo-Redo feature of Hide/Unhide.
In a nutshell, I do not want to use same stack for all Undo-Redo feature. Separate stack for zoom-in/out and separate stack for Hide-Unhide.
Is separate stack possible ? If yes, then how to do that ?
Below Undo-Redo code is of Zoom-in/out and it just for reference purpose.
myCommand.h
class myCommand: public QUndoCommand
{
public:
myCommand();
myCommand(double scale, QGraphicsScene* scene,QGraphicsView* view);
private:
QGraphicsItem* mItem;
QGraphicsScene* mScene;
QGraphicsView* mView;
double scaleFactor;
void undo();
void redo();
}
myCommand.cpp
myCommand::myCommand(double scale, QGraphicsScene *scene,QGraphicsView* view): mScene(scene),
mView(view),scaleFactor(scale)
{}
void guiCommand::undo()
{
mView->scale(1/scaleFactor,1/scaleFactor);
}
void myCommand::redo()
{
mView->scale(scaleFactor,scaleFactor);
}
myView.cpp
void myView::ZoomIn()
{
double scaleFactor = 1.1;
myCommand* command1 = new myCommand(scaleFactor,scene,view);
undoStack->push(command1);
view->scale(scaleFactor,scaleFactor);
}
void myView::ZoomOut()
{
double scaleFactor = 1.1;
myCommand* command2 = new myCommand(1/scaleFactor,_scene,_view);
undoStack->push(command2 );
view->scale(1/scaleFactor,1/scaleFactor);
}
myView.h
public:
QUndoStack* undoStack;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
