5

do_something()をクリックすると、関数が新しいスレッドとして扱われるかどうかを知りたいのですがmy_button

connect(my_button, SIGNAL(clicked), this, SLOT(do_something));
4

1 に答える 1

8

一般的な信号/スロットの動作は、接続タイプに基づいて決定されます。指定しない場合、デフォルトでQt::AutoConnection受信者のスレッドが使用され、直接接続できない場合は使用されます。

ドキュメントから:

スロットは、制御がレシーバーのスレッドのイベントループに戻ったときに呼び出されます。スロットはレシーバーのスレッドで実行されます。

接続時に接続タイプを変更して、動作を変更できます。

connect(my_button, SIGNAL(clicked), this, SLOT(do_something),
    Qt::QueuedConnection); // always queue

信号を発しているボタンについて話しているので、デフォルトの接続タイプはQt::AutoConnection、直接接続が行われdo_something、ボタンがクリックされた時点で直接呼び出されたかのようにスロットがすぐに実行されることを意味します。

于 2012-08-20T06:00:28.467 に答える