2017-07-06 4 views
0

データベースとやりとりしてレポートを作成するアプリケーションで作業しています。このアプリケーションを拡張可能にしておき、カスタムレポートビルダーをプラグインとしてアプリケーションに統合することができます。Qtを使用した拡張可能アプリケーション

私はQtのでサポートされているプラ​​グインアーキテクチャについていくつか質問があります:

  • は、私はそこに自分のプロセスにプラグインをロードすることはできますか?

  • カスタムQMLタイプをプラグインからメインアプリケーションに送信し、その上にいくつかのイベントハンドラをフックできます。

もう1つの質問:サービスベースのqtアプリケーションを開発するためのフレームワークはありますか?

答えて

1

独自のプロセスにプラグインを読み込むことはできますか?

プラグインのメカニズム(QPluginLoader)ではありません。プラグインメカニズムは、ライブラリを動的にロードします(異なるスレッドが可能です)。しかし、あなたのプラグインは標準入力/標準出力(または他のIPCメカニズム)を経由して、通常のQProcessを経由して、メインアプリケーションによって開始されるアプリケーション、およびデータを交換することができ

どのように私は、プラグインからのいくつかのカスタムQMLタイプを送ることができますメインアプリケーションに接続し、いくつかのイベントハンドラをフックします。

通常のプラグインを使用する場合は、作成したQMLオブジェクトを返すメソッドを追加するだけです。あなたがマルチプロセスバージョンを使用したい場合は、少し複雑になります:https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html#loading-qml-objects-from-c

stdoutを介してQMLコードを渡し、メインアプリケーションで作成します。いくつかの "コミュニケータ"オブジェクトをこの作成されたQMLオブジェクトに渡します。そのため、QMLタイプはそのコミュニケータを介して元のプロセスにデータを返すことができます。

+0

マルチプロセスシナリオの場合、QtROモジュールを使用してIPCを管理できますか? マルチプロセスシナリオを使用すると、プラグインを検証するPluginLoader機能が失われてしまいます。私はそれを自分で管理する必要があります。 –

+0

私は、PluginLoaderを使用し、重い計算が必要な場合はPluginLoaderを使用することをお勧めします。プロセスに委任し、プロセスとプラグインの間でIPCを使用します。 –

+0

はい、QtROは動作するはずです。しかし、計算のせいであれば、スレッドを使用してください!そのケースでは別のプロセスは必要ありません – Felix

関連する問題