0

Qt共有ライブラリ(dll)とQtアプリケーション間の通信にシグナルとスロットを使用する実際の例があります。私の質問は、それが好ましい方法なのか、それとも qt 共有ライブラリを扱うより良い方法があるのか​​ということです。詳細は次のとおりです。

私が開発したアプリケーションには、ネットワーク上のデバイスをリッスンし、GUI を更新する機能があります。共有ライブラリはネットワーク上のデバイスのリッスンを処理し、Qt アプリケーション モジュールは GUI 部分を処理します。

Q_DECL_EXPORT / Q_DECL_IMPORT を使用して、共有ライブラリとアプリケーションで使用される共通クラスをエクスポートするマクロがあります。この共通クラスは QObject から派生し、Qt シグナルとスロットを定義します。この共通クラスは、共有ライブラリ (dll) の一部として構築されます。

以下に示すように、Qt アプリケーションはコンパイル時に共有ライブラリをロードし、共通クラスのインスタンスを作成し、そのインスタンスを使用して Qt アプリケーションと Qt 共有ライブラリ モジュール間のシグナルとスロットを設定します。

Qt アプリケーションの初期化中:

// Create shared libray API class instance to access dll module features.
mp_sharedlib_api = new shareLibAPIClass( this );

以降の Qt アプリケーションでは:

// Connect signal/slot between shared library and Qt application
connect(
    mp_sharedlib_api , SIGNAL( SignalUpdateGUIStatus( QString ) ),
    this, SLOT( SlotUpdateGUIStatus( QString ) )
    );

これは、共有ライブラリを使用する Qt プロジェクトを開発する正しい方法ですか? 共有ライブラリの API ドキュメントはどのようなものですか? API ドキュメントには、共有ライブラリが送信/処理するシグナルとスロットがリストされていますか?

前もって感謝します。

4

1 に答える 1