Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该如何对时间线的后端进行编码_Python_Qt_Data Structures_Timeline - Fatal编程技术网

Python 我应该如何对时间线的后端进行编码

Python 我应该如何对时间线的后端进行编码,python,qt,data-structures,timeline,Python,Qt,Data Structures,Timeline,我想创建一个带有时间线的程序,就像你在视频编辑器中看到的那样。放置在该时间线上的事件将有开始时间和结束时间(或长度?)。它可以自由地前后移动时间轴的播放头,甚至可以控制它的速度。重要的是,当播放头在对象上方移动时,“进入”或“退出”对象时,播放头应触发事件。我不想使用计时器,因为可能会有很多这样的事件,而且可能效率很低 什么是看待这个问题的最佳方式?我已经编写了图形部分(使用QGraphicsView,其中使用自定义QGraphicsSitems表示事件),现在我正在寻找实现后端的最佳方法 我的

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

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


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

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

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

    要实现读取指针,只需连续查询段树中与当前时间重叠的所有段


    希望这有帮助

    你是说这个项目的时间线吗?playhead应该在“移动”时间线元素时触发事件,还是仅在发布时才触发事件?“那就不一样了。”琼克莱门茨说。实际上,在问这个问题之前,我浏览了OpenShot的源代码。但我不清楚时间线是如何实现的。@frb最好在播放头“进入”对象时触发“进入”事件,在“退出”时触发“退出”事件。向后或向前。谢谢!这看起来可能正是我要找的。我可能需要花一点时间来了解这一切,但据我所知,它让我想起了BSP树,它是QGraphicscene中使用的数据结构。我将在这里补充一点:它是对区间树数据结构的一个实用解释。