QThread: изменение элементов QDialog, Красивое решение. |
Здравствуйте, гость ( Вход | Регистрация )
QThread: изменение элементов QDialog, Красивое решение. |
canavar |
29.3.2009, 17:40
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 26.3.2009 Пользователь №: 643 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем доброго вечера.
Есть такая проблема: Существует окно QDialog. При загрузке этого окна происходят довольно тяжелые вычисления и, как следствие, окно замораживается. Элементов на форме 6 штук ( два QTableWidget, четыре QListWidget). Хотелось бы вынести все вычисления в отдельный поток. Но я не понимаю, как сделать так, чтобы второй поток смог изменять Widget'ы на форме QDialog. Можно конечно в поток передавать указатели на Widget'ы, но у меня есть подозрение, что существует более красивое решение... Что вы можете сказать по этому поводу? Заранее спасибо. |
|
|
canavar |
29.3.2009, 17:53
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 26.3.2009 Пользователь №: 643 Спасибо сказали: 0 раз(а) Репутация: 0 |
Под красивым решением имеется ввиду... кхм... не описать, нужно прочувствовать.
Да, согласен, так скорее всего и сделаю -- передам указатель на главный объект. ) Тогда вопросик в догонку... Тут начал переносить вычисления в отдельный поток.. Переопределил customEvent(), чтобы поток ловил event'ы. Переопределил run(). запихнул туда все вычисления. В конце метода run() написал exec(), чтобы thread не завершался и ждал event'ы. Но после того, как вычисления завершаются, программа вылетает с exception... Не могу понять в чем проблема. Если exec убрать, то все нормально, но поток завершается и не ловит event'ы. Нет никаких мыслей по этому поводу? P.S. Скоро код выложу, чтобы понятнее было.. |
|
|
Текстовая версия | Сейчас: 22.12.2024, 11:37 |