2016-11-22 4 views
0

Iは、信号スロットに関する質問がありますCL_Aの変数a、b、cを設定する。これを行うために、私は各セッターのシグナルスロット接続を設定しました。私の質問は次のとおりです:のQt C++より良い方法は

信号スロット接続(各方法に1つ)がたくさんある代わりに、より良い方法がありますか?

+2

スティーブンC.デューハーストに見てみてくださいお勧めします。とにかく、内側のオブジェクトが外側のオブジェクトに何かをセットしなければならない状況は、一見すると悪いデザインのように思えます。 – SingerOfTheFall

+0

'CL_A'メンバ変数は、同じタイプのシグナルスロットによって設定します(例のように)? – Tomas

+3

これは多くのコンテキストに依存します。同時にすべての値を設定すると、各値を個別に渡すのではなく、構造体を渡すことができます。しかし、あなたは質問を編集して、実際に何をしようとしているのかについていくつかの詳細を述べるべきです。 – thuga

答えて

-1

これらのクラスは実際にはQObjectの子孫であると仮定しますが、シグナルスロットをまったく使用することはできません。 「より良い」方法は、実際に何をしたいかによって決まります。それはスレッドセーフなものでなければならず、他のオブジェクトはグローバルなものか他のスレッドで使われているものなのでしょうか?それは非同期ですか?答えが "はい"の場合は、使用しているライブラリで有効な信号やその他の同期方法が必要です。

QSignalMapper(How works QSignalMapper?)は、複数のイベントを処理するユニバーサルシングルハンドラを作成することができますが、フィールドがタプルまたは配列ではない場合、それらのイベントを一般化する方法はありますか?

他のC++パターンを使用することができます。コードが時間に敏感ではなく、サポートしやすいコードを作成するのであれば、フィールドの名前をそのアドレスにマップするクラスを作成することを考えてください。

cl_b ["Speed "] =値;

私はあなたがB` `にA``へのポインタを渡し、直接ものを呼び出すことができる「C++落とし穴」

関連する問題