我想使用 Qt GUI 库作为 VST 插件的用户界面。VST 插件是 Windows 上的 DLL。主机应用程序调用 DLL 上的各种函数,包括openGUI()
.
我想知道如何从 DLL 中使用 Qt GUI;我已经做了一些研究来看看可能的选择,但我不完全确定这些限制。
主要问题是在哪里创建QApplication
对象并调用exec()
它(这是一个在应用程序退出之前不会返回的函数)。
我已经查看了这篇文章中给出的解决方案,但是在进一步阅读之后,看起来这个解决方案将无法在 Mac OS X 上运行,因为 Cocoa 对 GUI 可以运行的特定线程有更多限制。这真的有点骇人听闻。
我也看到了这个解决方案,但它依赖于Qt 库,QMfcApp
并且QWinWindow
它似乎不再是 Qt 库的一部分。
让我的 DLL 自己生成一个新应用程序是唯一的方法吗?大概我可以通过调用QProcess
并使用一些共享内存在 GUI 应用程序和我的 VST DLL 之间共享?有没有人遇到过这种类型的问题?我是不是走上了一条糟糕的道路,还是我还没有想到什么?
更新
经过进一步的研究,我遇到了这个QAbstractEventDispatcher
班级。我看过这篇文章,它似乎说可以QApplication::processEvents()
从您自己的(我的插件的主机)事件循环中调用,而不是调用QApplication::exec()
. 有没有人试过这样做?