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