Russian Qt Forum
Ноябрь 22, 2024, 17:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывод модального диалога из сценария, выполняющегося в другом потоке  (Прочитано 3605 раз)
Mike-Aiki
Гость
« : Июль 18, 2013, 12:16 »

Дано: сценарий выполняется в вспомогательном потоке, по ходу выполнения сценария нужно выводить модальные диалоги (ввод данных, подтверждение чего-либо, просто информационные), соответственно, с приостановкой работы сценария. 
И что-то заклинило меня - как это сделать, с учётом того, что окно диалога (GUI) можно выводить только в основном потоке?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Июль 18, 2013, 12:43 »

Код
C++ (Qt)
   int retVal;
   int inputVal;
   QMetaObject::invokeMethod(mainThreadObject, "showDialogAndRetValue", Qt::BlockingQueuedConnection, Q_RETURN_ARG(int, retVal), Q_ARG(int, inputVal));
Если я правильно понял задачу, то примерно вот так. mainThreadObject - объект, с которого нужно получить данные, showDialogAndRetValue - слот в объекте mainThreadObject, который сформирует, выведет диалог и вернет введенные данные, retVal - возвращаемое значение и inputVal - входящий параметр для функции int mainThreadObject->showDialogAndRetValue(int).
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Mike-Aiki
Гость
« Ответ #2 : Июль 18, 2013, 13:53 »

Ага, спасибо за флаг Qt::BlockingQueuedConnection !  Улыбающийся  Для проверки без возврата параметров попробовал просто connect() с этим флагом - окно вызывается, сценарий ждёт. Спасибо ещё раз!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 23.