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 回答