我应该如何编写时间轴的后端

时间:2013-01-06 19:28:04

标签: python qt data-structures timeline

我想创建一个时间轴的程序,就像你在视频编辑器中看到的一样。放置在该时间轴上的事件将具有开始时间和结束时间(或长度?)。可以自由地向前和向后移动时间轴的播放头,甚至可以控制它的速度。重要的是播放头应当在物体移动时“进入”或“退出”物体时触发事件。我不想使用计时器,因为可能会有很多这样的事件,而且效率可能会很低。

查看此问题的最佳方法是什么?我已经编写了图形部分(使用QGraphicsView,其中事件使用自定义QGraphicsItems表示),现在我正在寻找实现后端的最佳方法。

我的问题有意义吗?是不是太模糊了?

1 个答案:

答案 0 :(得分:2)

您似乎想要一种有效支持以下操作的数据结构:

  1. 插入和删除时间间隔。
  2. 移动时间间隔。
  3. 查询与特定时间重叠的所有时间间隔。
  4. 为此,您可能需要查看 interval tree 数据结构,它有效地支持操作(1)和(3)。您可以通过删除现有段然后将其重新插入间隔树来实现操作(2)。

    要实现读取指针,您可以连续查询段树以查找与当前时间重叠的所有段。

    希望这有帮助!