はい有効です。しかし、これを行う場合は、Qt 5接続構文を使用する場合、通常の方法とは異なる方法で信号/スロットへの接続を処理する必要があります。
connect(a, &A::SomeSignal, this, static_cast<void (C::*)(void)>(&C::SomeSlot));
connect(b, &B::SomeSignal, this, static_cast<void (C::*)(int)>(&C::SomeSlot));
をそれとも、Qtの5.7を使用している場合qOverloadヘルパー関数を使用します。簡単に言えばそうconnecting to overloaded signals and slots
を処理する方法の
次の質問を見て、答えは、のように接続します。
編集:@TobySpeightとして明示的なテンプレート引数を使用するには、以下の指摘:1スロットが過負荷になっているので、接続するために、両方のテンプレート引数を指定する必要がありますように
QObject::connect<void(A::*)(), void(C::*)()>(&a, &A::SomeSignal, &c, &C::SomeSlot);
QObject::connect<void(B::*)(int), void(C::*)(int)>(&b, &B::SomeSignal, &c, &C::SomeSlot);
メンバのポインタを 'static_cast'よりも明示的なテンプレート引数を' connect <>() '](/ a/37302949)に与える方が安全だと思います。 –
@TobySpeight私はこの構文を知らなかった、ありがとう。 'QObject :: connect'の実装を見ると、それがどのように推測できるのか分かりますが、特に[QObject :: connect()](http:// doc)のドキュメントを見ると、文書化されていないようです。 qt.io/qt-5/qobject.html#connect-3)(ドキュメントはテンプレートの使用を隠しています) –