我正在对QPlainText编辑进行子类化,我希望能够拦截撤消/重做命令,以便我可以实现自定义功能。
我意识到我可以使用setUndoRedoEnabled禁用撤消/重做功能,我可以检测到Ctrl + Z和Ctrl + Y键按下。但是,这似乎不是最好的跨平台方式。
有什么建议吗?
答案 0 :(得分:1)
您只需重新插入广告位:
class MyTestEdit : public QPlainTextEdit {
Q_OBJECT
public slots:
void redo() { ... }
void undo() { ... }
};
信号和插槽与其他c ++方法完全一样。如果在子类中重新实现它们,则将调用它们而不是父类。
答案 1 :(得分:0)
我认为你可以使用“QUndoStack”。
在你的子类的构造函数(构造函数更好)中,调用一个方法来创建Undo和Redo动作来处理你的类。
原型:
//调用此函数注册撤消和重做操作。
Void methodCrteaesUndoandRedoActions()
{
QUndoStack unStack = new QUndoStack (this);
QAction *undoAct = undoStack->createUndoAction(this);
QAction *RedoAct = undoStack->createRedoAction(this);
}
//在您的类中实现以下函数来处理业务。
void undo()
{
}
void redo()
{
}