qt QUndoGroup的使用
最近项目中用到撤销,恢复功能。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;并初始化。
初始化时,undoStack = new QUndoStack(MainWindow*);这里要用MainWindow的指针。
为了方便,可以定义全局MainWindow* pMain,在MainWindow的构造函数中,pMain = this;在A和B类中定义函数initUndoStack
void initUndoStack()
{
undoStack = new QUndoStack(pMain);
pMain->undoGroup.addStack(undoStack);
}
切换tab页时,要激活对应tab页的undoStack:即undoStack->setActive(true);
如我在A、B类中分别定义函数
void setUndoStackActive(bool bActive)
{
undoStack->setActive(bActive);
}
切换窗口时,调用对应的类的setUndoStackActive函数即可。
对于QUndoCommand类的使用,可参考Qt 的示例Undo FrameWork Example
qt QUndoGroup的使用的更多相关文章
- Qt Undo Framework Demo
Qt Undo Framework Demo eryar@163.com Abstract. Qt’s Undo Framework is an implementation of the Comma ...
- 将vim作为QT开发的IDE
转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIM ...
- qt 5.2.1类和模块的关系图
QT│ ├─ActiveQt│ │ ActiveQt│ │ ActiveQtDepends│ │ ActiveQtVersion│ │ QAxAggregated│ │ QAxB ...
- Qt's Undo Framework
Overview of Qt's Undo Framework Introduction Qt's Undo Framework is an implementation of the Command ...
- Qt Undo Framework
Qt undo/redo 框架 基于Command设计模式 支持命令压缩和命令合成 提供了与工具包其他部分融合很好的widgets和actions 术语(Terminology) Command - ...
- QT内省机制、自定义Model、数据库
本文将介绍自定义Model过程中数据库数据源的获取方法,我使用过以下三种方式获取数据库数据源: 创建 存储对应数据库所有字段的 结构体,将结构体置于容器中返回,然后根据索引值(QModelIndex) ...
- Ubuntu 下安装QT
Ubuntu 下安装QT 本文使用的环境 QT Library: qt-everywhere-opensource-src-4.7.4.tar.gz QT Creator: qt-creator-li ...
- Qt安装配置
Qt Creator: 下载: Qt 5.5.1 for Windows 32-bit(MinGW 4.9.2, 1.0 GB):http://download.qt.io/official_rele ...
- Qt信号与槽自动关联机制
参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exce ...
随机推荐
- electron启动出现短暂的白屏
mainWindow = new BrowserWindow({ height: 600, width: 960, frame: false, minWidth: 710, minHeight: 50 ...
- HTTP与HTTPS区别(详细)
转:http://blog.sina.com.cn/s/blog_6eb3177a0102x66r.html 1.减少http请求(合并文件.合并图片)2.优化图片文件,减小其尺寸,特别是缩略图,一定 ...
- LBS 基于位置的服务
LBS (Location Based Services)基于位置的服务 基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM网.CDMA网)或外部定位方式(如GPS)获取移动终端用户的位 ...
- Android MQTT的发布与订阅
一.MQTT介绍 链接1(菜鸟教程):https://www.runoob.com/w3cnote/mqtt-intro.html 连接2(MQTT中文网):http://mqtt.p2hp.com/ ...
- sed扩展命令使用
[root@b ~]# cat f.txt inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0[root@b ~]# cat ...
- Python实现人脸识别
识别图片 #coding=utf-8 import requests,cv2 import re import os import bs4 #2.读取图片 filename = 'E:/Python/ ...
- 软件-客户端管理工具-SourceTree-帮助:免费Git客户端:sourcetree详细介绍
ylbtech-软件-客户端管理工具-SourceTree-帮助:免费Git客户端:sourcetree详细介绍 1.返回顶部 1. 一.简介:一个用于Windows和Mac的免费Git客户端.Sou ...
- C# Setting.settings . 用法
1.定义 在Settings.settings文件中定义配置字段.把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改.可以使用数据网格视图,很方便: 2.读取配置值 t ...
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_3 mybatis连接池的分类
2.mybatis中的连接池 mybatis连接池提供了3种方式的配置: 配置的位置: 主配置文件SqlMapConfig.xml中的dataSourc ...
- web可拖动控件js
先下载:http://code.jquery.com/ui/1.10.3/jquery-ui.js $('.i-i-yuan').draggable({ containment: '#app'//可通 ...