Qt自带案例:
F:\Qt\Qt5.12.8\Examples\Qt-5.12.8\widgets\tools\undoframework
https://doc.qt.io/qt-5/qundocommand.html
它山之石:
Qt QUndoStack、QUndoCommand(实现撤回和回撤)
https://www.cnblogs.com/ybqjymy/p/12836278.html
Qt自带案例:F:\Qt\Qt5.12.8\Examples\Qt-5.12.8\widgets\tools\undoframeworkhttps://doc.qt.io/qt-5/qundocommand.html它山之石:Qt QUndoStack、QUndoCommand(实现撤回和回撤)https://www.cnblogs.com/ybqjymy/p/12836278.html
一般的情况下有工具栏的都用QMainWindow作为基类,但是我不想用QMainWindos做基类,我只是想使用其中的
QT
oolButton和StatusBar,所以用QWidget做基类
QT
oolButton添加到ToolBar后它本身的一些属性就不能用了,我向
实现
有外围设备插入后在工具栏显示图标,设备移除后图标也相应的移除,如果哦是用QAction还好弄,只要用QAction的函数
使用
Qt
的时候,有时需要
撤销
修改的代码,但可能回撤过头了,又不知道前一步修改了什么,这时候就比较麻烦了。下面提供2个快捷键,当
撤销
过头时,可恢复
撤销
内容。
撤销
的快捷键是 Ctrl+Z
恢复/向前的快捷键是 Ctrl+Shift+Z
很多软件中,都有Ctrl-Z撤回的操作,例如visio、Word等一些编辑器。在使用软件的时候,难免会有手误操作,例如,我码了一堆的字,想全选-复制,结果全选-
删除
了,还没有保存,如果没有撤回
功能
的话,字就白码了,还得重复一遍,所以软件有回撤
功能
是挺方便的。
二、
Qt
中的回撤栈
1、QUndoCommand表示对文档的单个编辑操作。例如,在文本编辑器中插入或
删除
文本块。QUndoCommand可以使用redo()将更改应用于文档,并使用undo()撤消更改。这些
功能
的
实现
必须在派生类中提供。如:
2、QUndoCommand对象由它们被压入的堆栈所拥有。如果命令已被撤消并且推送了新命令,则QUndoStack会
删除
该命令。例如:
MyCommand *command1 = new MyCommand();
stack->push(command1);