crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QThead и subthread. Связь с GUI. Как?
smartchecker
  опции профиля:
сообщение 29.11.2011, 15:11
Сообщение #1


Студент
*

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

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




Репутация:   0  


Как связать потоки, которые создавались где-то в потомках QThread с главным потоком GUI?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 29.11.2011, 15:28
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

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




Репутация:   2  


QApplication::thread() не?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smartchecker
  опции профиля:
сообщение 29.11.2011, 15:30
Сообщение #3


Студент
*

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

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




Репутация:   0  


Я ж не могу написать connect, т.к. ещё не знаю адреса объекта конкретного thread'а.
Общий смысл такой.
Поток начал что-то делать - записалось время начала в таблицу. Закончил - записалось в туже табл. в соотв. строчку время окончания и результат.
Как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 29.11.2011, 16:46
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

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




Репутация:   2  


QApplication::postEvent(); изучайте.

Сообщение отредактировал sidsukana - 29.11.2011, 16:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smartchecker
  опции профиля:
сообщение 29.11.2011, 17:18
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(sidsukana @ 29.11.2011, 17:46) *
QApplication::postEvent(); изучайте.

Почитал, не понял.
Поясните на примере.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 29.11.2011, 17:30
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

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




Репутация:   2  


Создаете наследника QEvent, в котором объявляете все необходимые для переноса переменные.
В потоке, в завершении выполнения всех операций вызываете

QApplication::postEvent(main_object, MyEvent(myresult));


Где main_object - обьект GUI формы на которую надо отослать информацию из потока.
Где MyEvent - класс наследник QEvent
Где myresult - что угодно в качестве результат который будет размещен в обьекте евента и послан на main_object

Правда я не учел что необходимо протаскивать объект формы в потоки, чтобы его указать в postEvent.
Может и по другому можно, но по началу я так делал, и больше не сталкивался с возвратом результата на форму из потока.

В главной форме принимать через вирутальный метод

bool event(QEvent* e);


2. Еще можно маппер сигналов попробовать использовать. Или просто проброс сигнала из субпотока в поток и в главную форму.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.4.2024, 17:02