1

libsigc++ を使用してアプリケーションを接続していますが、より簡単な方法については不明です。

データ層を管理する既存のオブジェクト階層があり、最上位のオブジェクトはすべての機能を公開します。これまでのところすべて順調です。

これに GUI オブジェクト階層を追加し、アプリケーション オブジェクト内でこれらをシグナル接続で接続します。接続するには、送信者と受信者の両方へのポインタが必要です。

さて、ツリーのずっと下にある子ウィジェットを直接フックして、ポインターをツリーの上下に渡す必要がありますか?

それとも、チェーンのすべてのステップでシグナルとスロットをフックする骨の折れるプロセスを実行する必要がありますか?

一方では、ポインターを渡すと、sig-slot モデルがもたらす分離が破られます。一方、すべてのステップで接続を作成することは、シグスロットが提供するはずの「イベントテレパシー」と韻を踏むようには見えません。

このモデルを経験した人なら、デフォルトのアプローチを検討するのはどれですか?

4

1 に答える 1

1

個人的には、シグナル/スロットメカニズムでレイヤーを「スキップ」しても問題はありません。私はこのように考えるのが好きです: コンポーネントは信号を外に送り出し、それらの信号に興味のある人は誰でもそれらを聞くことができます。

いくつかのヒント: 一般的すぎるシグナルを送信しないようにし、スロットの実行順序に依存しないようにします (特定のシグナルに対して多数のスロットが呼び出される場合)。

于 2009-04-28T21:15:32.567 に答える