Qt - запустить функцию в другом потоке

В моем простом QApplication у меня есть такой сценарий:

Class1 вызывается из основного потока.

Class2 вызывается из другого потока, содержащего ссылку на Class1.

Возможно ли вызвать функцию Class1 из Class2, используя основной поток?

Я безуспешно пытался использовать moveToThread. Спасибо за совет, с уважением.

Даниэле


person daniele86    schedule 21.09.2019    source источник
comment
Непонятно, что вы спрашиваете. Я думаю, что есть некоторая путаница терминов, например. class является типом и поэтому не может быть вызван. Поможет минимально воспроизводимый пример.   -  person nielsen    schedule 21.09.2019
comment
Я думаю, вы, вероятно, захотите использовать сигналы и слоты, если я понимаю ваш вопрос.   -  person qwerty9967    schedule 21.09.2019
comment
Да, это возможно. Вы можете вызвать нестатическую функцию-член Class1 из Class2   -  person Thomas Sablik    schedule 21.09.2019


Ответы (1)


Самый простой способ, вероятно, сделать вызов через соединение между сигналом и слотом между объектами to. При подключении укажите Qt::QueuedConnection или Qt::BlockingQueuedConnection в качестве типа подключения. Этот тип соединения поставит сигнал в очередь в потоке принимающего объекта.

Подробнее см. ConnectionType и подключить

person Eelke    schedule 21.09.2019
comment
Отлично, я использовал Qt::QueuedConnection, и функция всегда вызывается в основном потоке. Спасибо - person daniele86; 21.09.2019