Потоки , как и что ., Нужна помощь в создание потока |
Здравствуйте, гость ( Вход | Регистрация )
Потоки , как и что ., Нужна помощь в создание потока |
Antiglobalist |
14.5.2010, 14:32
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.3.2010 Пользователь №: 1574 Спасибо сказали: 0 раз(а) Репутация: 0 |
Пытался сам разобраться с потоками , но результат был не очень , нуждаюсь в советах.
Есть программа с архитектурой модель-вид-контроллер , которая рисует графики и сохраняет данные в вектор. Я в мэйн файле создаю 3-и объекта (Мод Вид Контр) И прописываю там между ними связи через сигналы и слоты. В моделе есть вектор в который записываются данные. Теперь основное , нужно создать поток в который мы закидываем указатель на вектор и в онлайн режиме должен строиться график по значениям интеграла функций из вектора. ВОт, мне нужна подсказка где его создать и как соединить , пробывал в мeйн файле создавать объект класса Thread, но при задержке(usleep() вставала вся программа ... В самом потоке создаю объект аналог Вид'а и осуществляю обмен информацией с моделью. Если где-то про это подробно написано , прошу дайте почитать |
|
|
Litkevich Yuriy |
14.5.2010, 16:13
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Гость_Денис_* |
14.5.2010, 16:21
Сообщение
#3
|
Гости |
В самом потоке создаю объект аналог Вид'а виджеты, а представление (вид) таковым и является, могут находится только в главном потоке, это указано в документации.Создавал его в главном потоке и соединял с контроллером и моделью , в итоге при задержке ничего не рисовалось поэтапно (рисовал на сцене и на вие отображал , после начертание одной линии ставил сцену в вию но ничего не было , появлялась только конечная сцена с готовым рисунком)И все же при остановке вся программа останавливалась а не отдельный поток. |
|
|
Litkevich Yuriy |
14.5.2010, 16:25
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Antiglobalist |
14.5.2010, 16:54
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.3.2010 Пользователь №: 1574 Спасибо сказали: 0 раз(а) Репутация: 0 |
в итоге при задержке понятное дело, ты усыпил программу. но понятно только зачем тебе задержкаМне нужно график рисовать с задержкой , т.е каждую секунду например одну линию , но показывает только конечный рисунок , мне нужно чтобы этот поток только вставал а главный работал , а такое ощущение что все в одном потоке ... А все , сделал небольшую перестановку и все заработало как надо , просто надо было новый Вид только с новым потоком связать . Спасибо вы мне помогли =) |
|
|
Litkevich Yuriy |
14.5.2010, 17:46
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
яб просто по таймеру вызывал бы метод, который строит часть графика, а по завершению этого метода взводил бы таймер заново. Тогда и потоков не надо
|
|
|
Antiglobalist |
15.5.2010, 17:37
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.3.2010 Пользователь №: 1574 Спасибо сказали: 0 раз(а) Репутация: 0 |
яб просто по таймеру вызывал бы метод, который строит часть графика, а по завершению этого метода взводил бы таймер заново. Тогда и потоков не надо Да препод сказал сдеалать в программе обработчик - кидать в новый поток вектор и что б он по данным строил график =) Поток не моя инициатива =) |
|
|
fordil |
16.5.2010, 11:03
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 26.4.2010 Пользователь №: 1659 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здарова, Ден
Задания действительно муть ) Делаешь потомка QThread с полем - указателем на твою модель. То есть ты уже получаешь доступ к твоему вектору. Теперь обрабатываешь какие надо циферки/букофки и как только завершил какой-то этап обработки посылай сигнал на виджет, чтобы он рисовал график. А чтобы создать задержку, используй таймер в самом потоке. Ну как-то так |
|
|
Текстовая версия | Сейчас: 3.1.2025, 2:35 |