【发布时间】:2020-05-28 10:09:00
【问题描述】:
我有一个关于 Qt5 中带有 QML UI 的 c++ 插件的问题。
假设我们有应用程序 A 和应用程序 B。两者都使用用 c++ 编写的插件 C 在 qml 中绘制一些 QQuickItems。
两个应用程序都运行良好。现在我必须使用更多选项来扩展插件(无需绘制,但基于插件 C 中已有的数据)——这就是问题所在——应该只在应用程序 B 中可用。
为什么?需要一些其他库的额外选项不应该添加到应用程序 A。因此应用程序 A 应该使用基本插件运行,应用程序应该使用扩展插件运行。
我的问题是实现这一目标的最佳/常用方法是什么?
我只是想了一下,得到了一些(在我看来不是很好)的解决方案/想法:
编写一个插件 D 可以做扩展选项。所以应用程序A可以用插件C运行,应用程序用插件C和D运行。缺点是2个插件需要通过qml进行大量通信(插件D需要C的数据)。我觉得这不是很好,有没有更好的方法在两个插件之间进行数据传输?
编写 2 个插件,其中插件 C 是基本插件,插件 D 具有插件 C 的内容以及扩展选项。那么这当然应该工作,但我将不得不维护代码两次。这绝对不好。
我考虑了一些条件包含,如果设置了相应的标志,则只包含扩展选项。我对此没有任何经验。但这可能吗?
【问题讨论】:
-
看SOLID原理,不用重复造轮子,用时间证明的就好。