0

Qtにアプリケーションがあります。窓です。このウィンドウには、表示される特定のデータがあります。

このウィンドウは別のアプリケーションから起動されます。

アプリケーションが、別のアプリケーションの別のインスタンスから別のデータで起動される可能性は十分にあります。

アプリケーションの 1 つのインスタンスが既に実行されているとします。アプリケーションが再度呼び出された場合に、別のインスタンスを起動せず、代わりに既存のウィンドウのデータを新しいセットで更新するようにするにはどうすればよいでしょうか?

簡単に言えば、別の呼び出しで渡された更新されたデータを表示する単一のウィンドウを持つ 1 つのアプリケーションです。

編集:私はそれをチェックアウトしました。私の問題を解決するのに十分なはずです。ただし、Qt インストールで関連ファイルが見つかりません。Qt ソリューションの一部ではなく、手動でダウンロードする必要があることを知りました。この場合、ライセンスの問題に影響はありますか?

編集 2: アプリケーションのインスタンス、たとえば、A が既に開いています。インスタンス B を起動しようとしました。B は A にメッセージを送信します。このメッセージを使用して、A が特定の条件を満たしているかどうかを確認し、B を開くかどうかを決定することはできますか?

そのような...

  1. A はすでに実行中です
  2. Bが発売されました
  3. BさんがAさんにメッセージを送る
  4. A は、このメッセージを使用して何かを確認しようとします。
  5. メッセージが true の場合 (たとえば)、A を実行したままにして、B を新しいインスタンスとして開きます
  6. そうでない場合... B を閉じ、A にこの新しい情報を使用してデータを更新させます

これは QtSingleApplication 、特にステップ 6 を使用して可能ですか? それとも、すでに実行中のインスタンスを検出するとすぐに新しいインスタンスが閉じますか?

また、QtSingleApplication をアプリケーション内に統合するにはどうすればよいですか? ヘッダーと cpp のみを含める必要がありますか? 私はdllを構築してそのように働きたくありません。他に必要な構成はありますか?

誰かが助けてくれれば幸いです。

4

1 に答える 1

1

あなたが探しているのはQtSingleApplicationです。アプリケーションを 2 回目に呼び出すと、QtSingleApplication::isRunning()別のインスタンスが既に存在するかどうかを確認できます。その場合は、QtSingleApplication::sendMessage()何かが呼び出されたことを最初のインスタンスに警告するために使用します。これらのメッセージを受信できるようにアプリケーションを設定するだけで (シグナルに接続することで認識できますQtSingleApplication::messageReceived())、そのシグナルを受信したときにそれに応じて反応します。

于 2012-12-13T14:47:02.207 に答える