我正在开发一个与VST3兼容的插件扫描器,它主要是在文件系统中的预定义位置查找.vst3文件。现在,如果任何回答这个问题的人曾经查看过DAW中的插件扫描器,它基本上所做的就是它有一个表,其中包含插件名称、供应商、版本、路径名等列。当它找到一个插件时,它会获得所有这些详细信息,一次填充一个表。该表将在GUI线程中,扫描将在单独的线程上完成。请注意,扫描是一个昂贵的操作,因为它需要大约每个插件最多5-10秒。一个典型的生产者大约有100个插件。现在我怎么用Qt做到这一点呢?我读了线程基础部分(我是线程的新手),如果我能用QtConcurrent类完成它就好了,但我不确定。如果这不是问这个问题的地方,很抱歉。我的问题通常只在这里得到回答。
发布于 2019-09-13 18:29:29
QtConcurrent似乎是正确的工具,既可以完成工作,又不会被线程的低层细节弄得太脏。
我的建议是首先设计数据结构和GUI。例如,您的描述将与用于表示和用户交互的QTableView相匹配的自定义数据类AudioPluginsTableModel (QAbstractTableModel的子类)。
您可以定义一个返回AudioPluginsTableModel实例的扫描函数,并使用QtConcurrent::run执行此函数,该函数将返回一个QFuture<AudioPluginsTableModel>,您可以使用QFutureWatcher观察其完成情况。
https://stackoverflow.com/questions/57901643
复制相似问题