我想知道do_something()
当我单击时该函数是否被视为新线程my_button
。
connect(my_button, SIGNAL(clicked), this, SLOT(do_something));
我想知道do_something()
当我单击时该函数是否被视为新线程my_button
。
connect(my_button, SIGNAL(clicked), this, SLOT(do_something));
典型的信号/插槽行为取决于连接类型。Qt::AutoConnection
未指定时,如果无法建立直接连接,则默认使用接收者的线程。
从文档:
当控制返回到接收者线程的事件循环时调用该槽。插槽在接收者的线程中执行。
您可以在连接时更改连接类型以更改行为:
connect(my_button, SIGNAL(clicked), this, SLOT(do_something),
Qt::QueuedConnection); // always queue
由于您正在谈论一个发出信号的按钮,因此默认连接类型Qt::AutoConnection
意味着建立了直接连接,并且do_something
插槽将立即执行,就像在单击按钮时直接调用它一样。