crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> GUI и поток
zss
  опции профиля:
сообщение 3.11.2010, 23:28
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть поток. который обновляет данные GUI. Это можно сделать с помощью сигналов или событий.

Но тут есть обратная задача - из потока опросить актуальное состояние GUI. Например, опросить у списка выделенный элемент.
Встает вопрос как прочитать из потока актуальное состояние GUI с учетом синхронизации (действиями пользователя).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 4.11.2010, 13:56
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


Так же сигналами и слотами.Т.е из потока шлешь сигнал,типа опросить,а гуй отправляет своё состояние в поток по этому запросу,скажем так
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zss
  опции профиля:
сообщение 4.11.2010, 15:04
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ernie @ 4.11.2010, 13:56) *
а гуй отправляет своё состояние в поток по этому запросу,скажем так

тоже сигналом ?

просто обработка сигнала происходит в главном потоке. Не понятно тогда как вторичный поток обработает сигнал из GUI
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 4.11.2010, 15:53
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


как я думаю,будет 2 пары сигнал - слот , скажем слот firstThread::needInformation() и сигнал secondThread::needInformation() ,2ая пара - слот secondThread::getInformation(здесь та информация которая нужна тебе,скажем QString status) и сигнал firstThread::sendInformation(QString status), и в слоте firstThread::needInformation() делаем emit sendInformation("good"),скажем.Вот как то так я это вижу,можно расширить в зависимости от твоих потребностей,скажем в needInformation добавить параметром какую ты хочешь информацию запросить и уже в зависимости от этого параметры в sendInformation подставлять
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
hkarel
  опции профиля:
сообщение 9.11.2010, 12:16
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 25
Регистрация: 25.5.2009
Пользователь №: 771

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(zss @ 4.11.2010, 0:28) *
Но тут есть обратная задача - из потока опросить актуальное состояние GUI. Например, опросить у списка выделенный элемент.
Встает вопрос как прочитать из потока актуальное состояние GUI с учетом синхронизации (действиями пользователя).


Простой директ-коннект из рабочего потока в GUI-поток пробовали? Параметр опроса передавать по ссылке. Тут может быть загвоздка если обращаться напрямую к методам визуальных компонентов, могут заругаться, типа к нам можно только из GUI-потока. Для опроса обычных членов класса или структур проблем как правило не возникает. Естественно, про механизмы синхронизации забывать не стоит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.11.2024, 7:35