0

複数のコンピューターで使用されるqt/pysideでデスクトップアプリケーションを開発しており、共通のデータベースサーバーを持っています。2 つの問題があります。

  1. 問題 1 : ユーザーがウィジェットを開いた場合、w1 としましょう (たとえば、ウィジェットはデータベース内の都市のリストを表示します)。同じユーザーが新しいウィジェット (w2) (都市を追加/更新するウィジェット) を開いたとします。データベースに新しい都市を追加した場合、この変更を w1 ウィジェットに反映する方法 (つまり、w1 のコンテンツを更新する)

  2. 問題 2: シナリオは問題 1 と非常によく似ていますが、違いは、ユーザー 1 が都市のリストを表示するウィジェット/タブ w1 を開いている場合のみです。そして、別のマシンのユーザー2(ただしデータベースは同じ)が新しい都市を追加し、ユーザー1のウィジェットを更新または変更する方法(ここでは、ユーザー1がw1ウィジェットで作業している可能性があります)

いくつかの一般的な機能を使用してこれを行う方法はありますか?

問題1の2つの解決策を見つけました:

  1. データベースの変更を定期的に確認し、ウィジェットを更新しますが、ウィジェットが複数あるため、アプリケーションの速度が低下する可能性があります。

  2. w1 から信号を送信し、w2 には信号を受信するためのスロットがあり、w2 が更新されます。

両方の問題に対する他の解決策はありますか?

4

1 に答える 1

0
case:1

connect(w2、SIGNAL(On_Widgetchange)、SLOT(this)、SignaltoW1anddatabase());

thisあなたの親アプリです。つまりOn_Widgetchange()、ウィジェットW2が更新時に放出する信号です。SignaltoW1anddatabase()プライベートスロットとして宣言します。

w2SignaltoW1anddatabase()の変更に基づいてデータベースを更新し、w1に詳細を追加/削除してw1を更新するためのコードを記述します。これにより、アプリケーションの速度が低下することはありません。

case:2

データベースの更新中にメッセージをブロードキャストする必要がありますが、データベースをポーリングしなくても実行できます。同じシグナルスロットメカニズムを使用して、特定のPCのウィジェットをネットワークに更新するときに都市名を含むメッセージをブロードキャストできるように。

connect(w1,SIGNAL(On_update()),this,SLOT(sendmessage()));

sendmessage()に、追加された詳細を送信するためのコードを記述します。そして、ネットウォッチャーを反対側で実行させます。

于 2012-05-18T15:28:59.557 に答える