Я хотел бы знать, обрабатывается ли функция 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
будет выполняться немедленно, как если бы он был вызван непосредственно в момент нажатия кнопки.