使用Qt的可扩展应用程序

时间:2017-07-06 08:36:29

标签: qt plugins service qml

我正在开发一个与数据库交互并构建报告的应用程序,我希望这个应用程序是可扩展的,并且我将来可以将自定义报告构建器作为插件集成到应用程序中。

我对Qt支持的插件架构有一些疑问:

  • 我可以在自己的进程中加载​​插件吗?

  • 如何从插件向主应用程序发送一些自定义QML类型并在其上挂钩一些事件处理程序。

另一个问题:是否有开发基于服务的qt应用程序的框架?

1 个答案:

答案 0 :(得分:1)

  

我可以在自己的进程中加载​​插件吗?

不使用插件机制(QPluginLoader)。插件机制动态加载库(可能有不同的线程)。但是,您的插件可以是普通应用程序,由主应用程序通过QProcess启动,并通过stdin / stdout(或其他IPC机制)交换数据

  

如何从插件向主应用程序发送一些自定义QML类型并在其上挂钩一些事件处理程序。

如果您使用普通插件,只需添加返回创建的QML对象的方法。看看:https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html#loading-qml-objects-from-c

如果您想使用多进程版本,它会稍微复杂一些。通过stdout传递QML代码并在主应用程序中创建它。将一些“communicator”对象传递给这个创建的QML对象,以便QML类型可以通过该通信器将数据发送回原始进程。