Tiled源码分析(二): 多文档支持

本文详细分析了Tiled编辑器的多文档支持,包括文档模型的管理,如地图数据模型、编辑操作信号的派发、undo堆栈管理等。重点介绍了新建、打开、关闭和保存文档的操作流程,如新建时MapDocument由NewMapDialog创建,打开时检查插件读取能力,关闭时的保存确认,以及保存操作后更新最近打开文件记录。此外,还提到了最近打开文件记录的实现,使用QSettings进行存储和恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


文档模型

文档对象是一个MapDocument类, 它的主要功能有:

  • 管理编辑操作的signal的派发, 保证一些UI的状态可以正确地更新
  • 管理地图的数据模型, 如layer model(Qt MVC结构中的model, 可以绑定到控件)
  • 增加删除地图对象的操作接口
  • 管理这个地图的undo堆栈(后续专门分析一下undo/redo)
  • 管理地图编辑时的选中状态
然后就是DocumentManager, 是一个单件类, 用于管理打开的所有MapDocument, 看看它都有些什么:
  • 持有一个QTabWidget, 这个控件就是MainWindow的center widget, 所一直是最大化居中显示的
  • 持有一个QUndoGroup, 因为每个MapDocument都有一个QUndoStack, 所以算是一个undo管理器(Qt这点很人性化, 常用功能都封装好了)
  • 管理当前文档, 以及切换状态. 每当当前文档变化时, 都会发出一个currentDocumentChanged的signal

文档操作

不管什么编辑器, 针对文档的操作就这么几种, 看看所有编辑器工具栏上那万年不变的前几个图标就知道了.

新建

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值