は:Qt:イベントは順番に処理されますか?私はその機能の一つがないクラスA、持っていた場合
void A::func()
{
emit first_signal();
emit second_signal();
}
は、クラスBはsecond_signal
に2つのスロット、first_signal
に接続された1つ、およびその他を有すると仮定すると、それはがことが保証されfirst_signal
に接続されているスロットは、の前に常にと処理されます。second_signal
スロット?
デフォルトではなくても、同じタイプのものであれば保証されると思います。キューに入れられたイベントは、それぞれが同じ優先順位を持つ2つのイベントを作成し、それらのイベントは順番に処理されます。また、デフォルトの接続タイプはQt :: AutoConnectionです。これは、エミッタとレシーバの両方が同じスレッド内にある限り、直接的に解決されます。 –
投稿の頭文字は '信号とスロット間の直接接続タイプを使用している場合'を読んでください。デフォルトの型は 'Qt :: AutoConnection'であるため、送信コードと受信オブジェクトが異なるスレッドに存在するかどうかによって動作が異なります。 ['Qt :: ConnectionType's docs](http://qt-project.org/doc/qt-4.8/qt.html#ConnectionType-enum)と[スレッド、イベントとQObjects](http:// qt- project.org/wiki/Threads_Events_QObjects)を参照してください。 – Hossein
Qt :: QueuedConnection(またはQt :: AutoConnectionを選択し、そのスロットが信号とは別のスレッドにある)を選択した場合、スロットは非同期に呼び出されますが、疑問はまだ残っていると思います。「スロットfirst_signalに接続されているのは、second_signalスロットの前に常に処理されますか?誰でも答えがありますか? –