我想创建一个程序与时间轴很像那些你会看到在视频编辑器。放置在该时间轴上的事件将具有开始时间和结束时间(或长度?)它将有可能自由移动时间轴的播放头,向前和向后,甚至控制它的速度。重要的是,当playhead在物体上移动时"进入"或"退出"物体时,它应该触发事件。我不想使用计时器,因为可能会有很多这样的事件,它可能会效率低下。
看这个问题最好的方法是什么?我已经编写了图形部分(使用QGraphicsView,其中使用自定义QGraphicsItems表示事件),现在我正在寻找实现后端的最佳方法。我的问题有意义吗?是不是太模糊了?
您似乎需要一个有效支持以下操作的数据结构:
- 插入和删除时间间隔。
- 移动一个时间间隔
- 查询与某个时间重叠的所有时间间隔
对此,您可能想要查看区间树数据结构,它有效地支持操作(1)和(3)。您可以通过删除现有段然后将其重新插入到区间树中来实现操作(2)。
要实现读指针,只需连续查询段树中与当前时间重叠的所有段。
希望这对你有帮助!