Russian Qt Forum
Июнь 16, 2024, 05:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вызывать диалоги из не GUI потока?  (Прочитано 3275 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Январь 26, 2011, 09:18 »

Есть основной (GUI) поток. Есть другой поток занимающийся обменом по GSM модему. Иногда второму потоку нужно что-то от пользователя, например ввести пинкод. Хотелось бы вызвать статическую функцию какого-нибудь диалога, который вернет пинкод. что-то типа

QString pinCode = PinCodeDialog::getPinCode();

как такое в Qt реализовывается?

ps в билдере есть синхронизация с гуипотоком. можно из не гуи потока вызвать диалог с помощью Synchronize(). На время выполнения диалога не гуи поток останавливается. Synchronize позволяет избежать всякие сбои, которые возможны при обращении к одним данным из разных потоков.
Записан
alexman
Гость
« Ответ #1 : Январь 26, 2011, 09:24 »

Можно послать сигнал в GUI поток (при конекте указать ключ Qt::BlockingQueuedConnection); там показать диалог и установить флаг в текущем потоке. Конечно можно все это дело обернуть PinCodeDialog::getPinCode();
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #2 : Январь 26, 2011, 09:38 »

идея понятна, спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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