описании коннекта есть флаг Qt::ConnectionType, который может принимать определённые значения. В документации написано по этому поводу, что если мы работаем в одном потоке, то необходимо выставлять один флаг, если сигнал идёт в другой поток, выставляем другой, к тому же там есть autoConnection, который сам выбирает какой флаг используется, в зависимости от того, в одном или в разных потоках источник и приёмник(вольная адаптация).
Вопросы у меня возникли следующие:
1. Почему и зачем явно прописываются флаги, если можно оставить по дефолту авто и он сам разрулит. Есть ли другая причина, кроме читабельности
2. Если у тебя передающий и принимающий объекты работают в одном потоке, а мы установили флаг QueuedConnection, как себя поведёт программа? (и аналогично с directConnection) Слот просто не обработается или рантаймовская ошибка будет?
queued в одном потоке поставит вызов в эвентлуп и выйдет из вызвавшей функции
Очевидно же, что иногда ты можешь хотеть посылать В ОДНОМ ПОТОКЕ сигналы АСИНХРОННО.
Кроме этого, вид коннекта определяется по принадлежности объектов В ДАННЫЙ МОМЕНТ, но в программе объекты Qt могут быть переданы из одного потока в другой, и нужен уже ДРУГОЙ вид коннекта
Обсуждают сегодня