Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: Larry от Апрель 01, 2011, 10:03



Название: Прошу совета по QTread
Отправлено: Larry от Апрель 01, 2011, 10:03
Добрый день, форумчане! Хотел бы попросить у Вас совета, как правильно решить следующую задачу: есть qmainwindow на котором расположена сцена QGraphicsScene. На сцену выводится видео через phonon и бегущая строка(QLabel). И конечно все это тормозит :). Подскажите пожалуйста, как реализовать, чтобы бегущая строка работала в другом потоке и не было тормозов...заранее спасибо.


Название: Re: Прошу совета по QTread
Отправлено: RedDog от Апрель 01, 2011, 10:11
Из дочернего в главный слать сигналы, а в главном их уже обрабатывать


Название: Re: Прошу совета по QTread
Отправлено: Larry от Апрель 01, 2011, 10:22
А можно поподробней...я с потоками ни разу не работал, но очень надо решить эту проблему. Я понимаю так, что надо наследовать QThread и переопределить метод run() и в этом классе создать QLabel(бегущую строку). А как ее тогда наложить на видео?До этого я налаживал через QGraphicsProxyWidget... А как теперь быть? И какие слать сигналы...


Название: Re: Прошу совета по QTread
Отправлено: RedDog от Апрель 01, 2011, 10:26
QLabel создавать в основном потоке, а в методе run() дочернего только обрабатывать информацию и слать сигнал в основной, в котором отлавливать этот сигнал и выводить в QLabel нужные данные.


Название: Re: Прошу совета по QTread
Отправлено: Larry от Апрель 01, 2011, 10:35
у меня бегущая строка работает по таймеру...когда срабатывает таймер, то происходит проверка границ и если все нормально сдвигается строка в ту или иную сторону на один пиксел и после происходит перерисовка. Строка выводится в перегруженном paintEvent и обновление ее происходит по QLabel::update(). Тормоза происходят при перерисовке? Тогда если перерисовка там же и останется, то тормоза останутся...или я чего-то не понимаю?


Название: Re: Прошу совета по QTread
Отправлено: Larry от Апрель 01, 2011, 11:26
а какие варианты еще есть? Объясните пожалуйста, может я говорю чушь? Мне надо убрать тормоза бегущей строки....