码迷,mamicode.com
首页 > 其他好文 > 详细

qt QUndoGroup的使用

时间:2019-11-05 15:05:50      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:menu   com   激活   dem   create   demo   amp   action   框架   

最近项目中用到撤销,恢复功能。qt的demo中有一个例子,是类似于单文档的。而我的项目中是类似于多文档的项目,即可能要打开多个页面,不同的页面都有撤销恢复功能。这样的话,就要用到QUndoGroup类。网上资料相对较少。我把自己的探索写出来,抛砖引玉,和大家讨论。

我把我的工程结构大概描述一下:MainFrame为主框架,MainFrame有菜单栏,且在MainFrame中有多个tab页(多个窗口)。

这样,我下文中将tab页的两个窗口类名记为A,B。

我在MainFrame类中定义成员变量 QUndoGroup* undoGroup;   QMenu* editMenu;  (当然还有其他menu,这里略)

在A,B中分别定义 QUndoStack* undoStack;

在初始化的时候,创建菜单 

editMenu = menuBar()->addMenu("编辑");

undoGroup = new QUndoGroup(this);

undoAction = undoGroup->createUndoAction(this, "撤销");
undoAction->setShortcuts(QKeySequence::Undo);

redoAction = undoGroup->createRedoAction(this, "恢复");

redoAction->setShortcuts(QKeySequence::Redo);

editMenu->addAction(undoAction);

editMenu->addAction(redoAction);

 以上代码在mainwindow构造函数中。

在不同的tab页的窗口(A、B)类中,定义QUndoStack* undoStack;并初始化。

切换tab页时,要激活对应tab页的undoStack:即undoStack->setActive(true);

如我在A、B类中分别定义函数

void setUndoStackActive(bool bActive)

{

  undoStack->setActive(bActive);

}

切换窗口时,调用对应的类的setUndoStackActive函数即可。

 

对于QUndoCommand类的使用,可参考Qt 的示例Undo FrameWork Example

qt QUndoGroup的使用

标签:menu   com   激活   dem   create   demo   amp   action   框架   

原文地址:https://www.cnblogs.com/warmlight/p/11766472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!