Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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) Link а гуй отправляет своё состояние в поток по этому запросу,скажем так тоже сигналом ? просто обработка сигнала происходит в главном потоке. Не понятно тогда как вторичный поток обработает сигнал из 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) Link Но тут есть обратная задача - из потока опросить актуальное состояние GUI. Например, опросить у списка выделенный элемент. Встает вопрос как прочитать из потока актуальное состояние GUI с учетом синхронизации (действиями пользователя). Простой директ-коннект из рабочего потока в GUI-поток пробовали? Параметр опроса передавать по ссылке. Тут может быть загвоздка если обращаться напрямую к методам визуальных компонентов, могут заругаться, типа к нам можно только из GUI-потока. Для опроса обычных членов класса или структур проблем как правило не возникает. Естественно, про механизмы синхронизации забывать не стоит. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 9.12.2025, 6:49 |