Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: gavlig от Август 18, 2011, 23:18



Название: компонент timeline
Отправлено: gavlig от Август 18, 2011, 23:18
Всем привет! Очень нужна помощь в виде советов и пожеланий :)
Надо написать компонент для просмотра видеоархивов. Должен он в реальном времени отслеживать положение видео на "временной линии", то есть рисовать надо будет много и часто. Первая моя попытка была с использованием пополам QPainter'a и чистого OpenGL api, но в результате криворукости компонент не хило жрёт проц во время проигрывания. Сейчас решил ещё раз подумать над реализацией в целом. Попробовал QGraphicsView со всеми вытекающими и QGLWidget в качестве viewport'a, написал маленькую демку, рисующую линейку в пределах и за пределами вьюпорта, чтобы её можно было потягать.
.cpp
http://paste.org.ru/?51huds
.h
http://paste.org.ru/?0lyk0v

Так вот эта простенькая штука жрёт до десяти процентов от интеловского 2.4 code2 duo при наличии nvidia 9600 с блобом. Теперь вопрос, есть ли возможность заставить QGraphicsView не есть лишних ресурсов на скролле или таки надо заняться велосипедостроением и пилить всё самому(под пилением подразумевается оптимизация старого уже набыдлокоденного)?

картинки прилагаются

вот первый вариант компонента
http://piccy.info/view3/1874267/e4e5fbdebaa28663a15b39b70c7827ec/orig/
вот демка, сырцы которой в первом посте
http://piccy.info/view3/1874285/4eed11eface4e0ec7f197b33a6296d32/orig/

Отсылкам на любые примеры или доки буду неописуемо рад :)


Название: Re: компонент timeline
Отправлено: Mikhail от Август 19, 2011, 11:05
Никаких ужасных трмозов не ощутил. Процессор до 3 процентов при протяжке. У меня комп по слабее существенно.

Вообще то, желательно шкалу отрисовать в фоне. В уачестве ползунка можно использовать QGraphicsLineItem, вернее класс на его основе, в котором переопределить shape ()  и boundingRect ()


Название: Re: компонент timeline
Отправлено: gavlig от Август 19, 2011, 11:20
не понял про отрисовки шкалы в фоне.. А где я отрисовываю? Ползунок мне не нужен, таймлайн должен тягаться при зажатой кнокпе мыши. Может вместо скроллинга как-то по-другому передвигать вьюпорт?


Название: Re: компонент timeline
Отправлено: _OLEGator_ от Август 21, 2011, 11:00
Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение.

Нужно унаследоваться от QWidget и переопределить paintEvent.
Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL.


Название: Re: компонент timeline
Отправлено: gavlig от Август 22, 2011, 12:18
Именно по такому пути я и пошёл изначально. :) Только вместо QWidget -> QGLWidget.


Название: Re: компонент timeline
Отправлено: spirits25 от Октябрь 18, 2012, 15:17
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?


Название: Re: компонент timeline
Отправлено: panAlexey от Октябрь 19, 2012, 16:32
Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение.
+1

Нужно унаследоваться от QWidget и переопределить paintEvent.
Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL.
Тормозов при отрисовке линий и не будут.
Тормоза восновном идут при отрисовке строк.


Название: Re: компонент timeline
Отправлено: panAlexey от Октябрь 19, 2012, 16:35
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить? :)


Название: Re: компонент timeline
Отправлено: _OLEGator_ от Октябрь 19, 2012, 16:39
Тему годовой давности решили поднять?
to panAlexey:
Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал.


Название: Re: компонент timeline
Отправлено: spirits25 от Октябрь 19, 2012, 16:48
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить? :)
Я не знаю как сделать бесконечную прокрутку с изменением даты в шапке. В этом проблема. Можете пример?


Название: Re: компонент timeline
Отправлено: panAlexey от Октябрь 21, 2012, 21:26
Тему годовой давности решили поднять?
to panAlexey:
Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал.
если про "тут" то согласен.


Название: Re: компонент timeline
Отправлено: panAlexey от Октябрь 21, 2012, 21:41
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить? :)
Я не знаю как сделать бесконечную прокрутку с изменением даты в шапке. В этом проблема. Можете пример?

если на словах, то у тебя есть грубо отрезок  А--------Б--------С----------->Д
первоначальная длина АД, область видимости на экране БС. БС может меняться в зависимости от ширины окна.  ты двигаешь БС, если оно наезжает на Д просто приращиваешь Д, если на А - уменьшаешь А. получается бесконечная прокрутка. Рисуешь все опираясь на разницу Б-А - получается точка отсчета для паинтера.
"с изменением даты в шапке." - тут уже кто как предпочитает, можно привязать дату к Б (привычный порядок). но удобнее к середине отрезка БС.

это типа я описал какие переменные нужны. или требовалось что-то еще?


Название: Re: компонент timeline
Отправлено: spirits25 от Октябрь 22, 2012, 10:52
Если всё так просто, почему никто не может минимальный пример дать? или никто такого не писал? я с рисованием не дружу.


Название: Re: компонент timeline
Отправлено: Bepec от Октябрь 22, 2012, 12:18
Потому что это простейшая арифметика. Если Курсор >= ВидимыйКонец тогда двигай. И обратно. PanAlexey чётко и понятно описал.

Или вас озадачивает именно процесс рисования? Если он - то я могу вам накидать проектик (кривой по рисункам, ибо не художник, но без логики) :)

PS QэээSlider вам чем не подходит? идеальный же кандидат :)


Название: Re: компонент timeline
Отправлено: spirits25 от Октябрь 22, 2012, 12:26
Да, меня озадачивает сам процесс рисования=) я понял смысл, ЧТО нужно делать, но мне бы минимальный простой пример КАК=)


Название: Re: компонент timeline
Отправлено: panAlexey от Октябрь 22, 2012, 12:33
Если всё так просто, почему никто не может минимальный пример дать? или никто такого не писал? я с рисованием не дружу.
Все могут. Но не у всех есть время и желание.
Жди профессионального альтруиста.


Название: Re: компонент timeline
Отправлено: Bepec от Октябрь 22, 2012, 15:29
НЕ лучший код.

НЕ оптимизированная программа.

НЕ нерабочая программа.

Но если есть желание и умение оценить чужой труд, то прошу в архив.

PS pro файл внутри, для любителей QtCreator.


Название: Re: компонент timeline
Отправлено: spirits25 от Октябрь 22, 2012, 15:54
НЕ лучший код.

НЕ оптимизированная программа.

НЕ нерабочая программа.

Но если есть желание и умение оценить чужой труд, то прошу в архив.

PS pro файл внутри, для любителей QtCreator.

Большое спасибо, сейчас посмотрю. только вот комменты на кириллице, сохранённые в cp1251 сразу громко сказали о себе=)

Посмотрел, всё отлично=) главное я понял как вообще это делать, теперь сделаю то, что хотел.
Спасибо!=)


Название: Re: компонент timeline
Отправлено: Bepec от Октябрь 22, 2012, 16:25
Комменты, сделанные виндузятником под виндой в виндовской кодировке явно говорят о виндовсе :)

В заголовок темы РЕШЕНО пихни )