многопоточность QThread |
Здравствуйте, гость ( Вход | Регистрация )
многопоточность QThread |
Алексей1153 |
25.6.2010, 10:53
Сообщение
#41
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
нет, как-то вот так
за ошибки в коде не ручаюсь, писал прямо в посте, а на память ещё всего не помню ) Сообщение отредактировал Алексей1153 - 25.6.2010, 20:00 |
|
|
eldar85 |
25.6.2010, 11:13
Сообщение
#42
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
большое спасибо, сейчас буду пробывать, потом отпишусь))))
нет, получается вообще чет непонятное, он на сигнал vivod() из Thread ругается теперь first defined heremultiple definition of `Thread::vivod1(QString)' multiple definition of `Thread::run()' |
|
|
Алексей1153 |
25.6.2010, 11:26
Сообщение
#43
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
eldar85, я не знаю иерархию твоих инклудов. Прицепил бы проект ? )
|
|
|
eldar85 |
25.6.2010, 14:55
Сообщение
#44
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
спасибо тебе за совет, все получилось))))))))))))))))
ошибка была в твоем коде лишь в том что ты метод run() сделал как сигнал, его нужно просто объявлять как обычную функцию, а остальное все отлично, еще раз спасибо, наконец то хоть что то прояснилось, да еще и почитал про сигналы со слотами побольше... я как то им мало придавал значения... это было моей глупостью))) |
|
|
Алексей1153 |
25.6.2010, 19:55
Сообщение
#45
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Ага, вижу косяк, спецификатор доступа не переопределил
Сообщение отредактировал Алексей1153 - 25.6.2010, 19:59 |
|
|
eldar85 |
25.6.2010, 20:10
Сообщение
#46
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
все работает отлично, вот только еще с одним бы разобраться, допустим я запустил десять потоков в таком плане
так вот, в текстовое поле все выводиться лишь после того как все потоки закончатся, а нельзя ли сделать так чтобы поток выполнил свое действие и вывел на экран свое значение, и так далее, а то к примеру у меня один поток может выполняться 2 секунды, а другой возможно несколько минут и тогда получиться что они друг друга будут ожидать пока все не закончаться, а если их сделать 20...100 то вообще как то будет не к стати... может знаете как так сделать??? я тут в цикле специально секунду поставил ожидание, чтобы посмотреть как будет выводиться и вот и вышло что пока не пройдет 10 сек то на текстовое поле нифига ничего не выводиться... только когда все потоки все сделают... Сообщение отредактировал eldar85 - 25.6.2010, 20:11 |
|
|
Алексей1153 |
25.6.2010, 20:16
Сообщение
#47
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
попробуй processEvents()
|
|
|
Litkevich Yuriy |
25.6.2010, 20:42
Сообщение
#48
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
eldar85, ты всё же сделай примитивный проект, окно с кнопкой и меткой, при нажатии на кнопку в метку помести текст "начали", затем запускай потоки, которые что-то будут делать, например большие циклы. По завершении потоков выводи в метку "закончили".
Если с таким приложением будут проблемы - выкладывай в форум. |
|
|
eldar85 |
25.6.2010, 21:39
Сообщение
#49
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
а все, я разобрался почему))) дело было в том что я ставил ожидание в секунду в цикле запуска потоков, в итоге главное окно ждало когда закончиться цикл и только после этого обновляло окошко ... если ожидание из цикла убрать и поставить в метод run() то тогда все cool...
да проект то и так не сложный, примерно так как вы и сказали, одна кнопка, одно текстовое поле и класс для потоков... главное что я понял что задерживало вывод в тектовое поле, это долбынный цикл)) и поставил за одно в него qApp->procecEvent(): вот и все)) большое спасибо за помощ)) |
|
|
Алексей1153 |
26.6.2010, 5:17
Сообщение
#50
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
Текстовая версия | Сейчас: 28.1.2025, 18:55 |