Russian Qt Forum
Сентябрь 30, 2024, 16:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование QGraphicsScene в отдельном потоке  (Прочитано 4551 раз)
Sasha
Гость
« : Октябрь 31, 2013, 17:07 »

Здравствуйте,
Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Октябрь 31, 2013, 18:44 »

нет
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Октябрь 31, 2013, 18:49 »

Здравствуйте,
Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток.
Можно что бы первый поток занимался графикой, а другие занимались вычислениями. Нет такого понятия - главная нить, она ни главнее других нитей. Улыбающийся
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Ноябрь 01, 2013, 10:48 »

можно рисовать в pixmapы или image в отдельном потоке, а отображать в главном, но это конечно повысит расход памяти, зато увеличит быстродейсивие
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Ноябрь 01, 2013, 11:21 »

Нет такого понятия - главная нить, она ни главнее других нитей. Улыбающийся
Хммм... не уверен. Напр выход из главной означает завершение приложения, а выход из других - нет
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #5 : Ноябрь 01, 2013, 11:57 »

Напр выход из главной означает завершение приложения, а выход из других - нет
Если вы будете выходить из любой нити по exit, они все будут главными. Улыбающийся
Записан
Sasha
Гость
« Ответ #6 : Ноябрь 01, 2013, 12:21 »

Здравствуйте,
Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток.
Можно что бы первый поток занимался графикой, а другие занимались вычислениями. Нет такого понятия - главная нить, она ни главнее других нитей. Улыбающийся
Под главным, я понимаю поток в котором работает пользовательский интерфейс. Т.е. рисование и приём сообщений от пользователя осуществляется в одном потоке и чем тяжеловеснее рисование тем, как мне показалось, реже приходят сообщения от мыши или от сенсорного экрана. Поэтому я и подумал, что может быть можно перенести отрисовку в отдельный поток (пусть даже рисуя в фоновый буфер, а в главном окне только его отображать), чтобы она не мешала приёму сообщений.
Записан
Sasha
Гость
« Ответ #7 : Ноябрь 01, 2013, 12:41 »

можно рисовать в pixmapы или image в отдельном потоке, а отображать в главном, но это конечно повысит расход памяти, зато увеличит быстродейсивие
Попытался это сделать, но:
1) почему-то перестали отображаться картинки. С этим пока не разбирался.
2) программа начала падать. Напомню, что я пытаюсь перенести в отдельный поток отрисовку графической сцены, которую рисую ф-ей render. Если просто рисую в буфере, скажем эллипс, то всё хорошо, а вот с ф-ей render туго. Точнее, она срабатывает, но падения начинаются тогда, когда со сценой что-то происходит. Похоже, что просто накладываются обращения к графическим элементам (один поток обращается к ним для рисования, а второй для выполнения над ними некоторых действий). Т.е. нужно всё синхронизировать, но как это сделать, до конца не понятно. Можно попробовать вставить блокировку при приёме сообщений сцены и при отрисовке, но не факт что этого будет достаточно, да и это слишком крупно и, возможно сведёт на нет всё преимущество выноса отрисовки в отдельный поток (т.е. пока будет идти рисование всё-равно сообщения приниматься не будут).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 22.