Russian Qt Forum
Ноябрь 23, 2024, 18:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
компонент timeline
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: компонент timeline (Прочитано 11194 раз)
gavlig
Гость
компонент timeline
«
:
Август 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/
Отсылкам на любые примеры или доки буду неописуемо рад
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: компонент timeline
«
Ответ #1 :
Август 19, 2011, 11:05 »
Никаких ужасных трмозов не ощутил. Процессор до 3 процентов при протяжке. У меня комп по слабее существенно.
Вообще то, желательно шкалу отрисовать в фоне. В уачестве ползунка можно использовать QGraphicsLineItem, вернее класс на его основе, в котором переопределить shape () и boundingRect ()
Записан
gavlig
Гость
Re: компонент timeline
«
Ответ #2 :
Август 19, 2011, 11:20 »
не понял про отрисовки шкалы в фоне.. А где я отрисовываю? Ползунок мне не нужен, таймлайн должен тягаться при зажатой кнокпе мыши. Может вместо скроллинга как-то по-другому передвигать вьюпорт?
Записан
_OLEGator_
Гость
Re: компонент timeline
«
Ответ #3 :
Август 21, 2011, 11:00 »
Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение.
Нужно унаследоваться от QWidget и переопределить paintEvent.
Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL.
Записан
gavlig
Гость
Re: компонент timeline
«
Ответ #4 :
Август 22, 2011, 12:18 »
Именно по такому пути я и пошёл изначально.
Только вместо QWidget -> QGLWidget.
Записан
spirits25
Гость
Re: компонент timeline
«
Ответ #5 :
Октябрь 18, 2012, 15:17 »
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: компонент timeline
«
Ответ #6 :
Октябрь 19, 2012, 16:32 »
Цитата: _OLEGator_ от Август 21, 2011, 11:00
Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение.
+1
Цитата: _OLEGator_ от Август 21, 2011, 11:00
Нужно унаследоваться от QWidget и переопределить paintEvent.
Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL.
Тормозов при отрисовке линий и не будут.
Тормоза восновном идут при отрисовке строк.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: компонент timeline
«
Ответ #7 :
Октябрь 19, 2012, 16:35 »
Цитата: spirits25 от Октябрь 18, 2012, 15:17
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить?
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
_OLEGator_
Гость
Re: компонент timeline
«
Ответ #8 :
Октябрь 19, 2012, 16:39 »
Тему годовой давности решили поднять?
to panAlexey:
Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал.
Записан
spirits25
Гость
Re: компонент timeline
«
Ответ #9 :
Октябрь 19, 2012, 16:48 »
Цитата: panAlexey от Октябрь 19, 2012, 16:35
Цитата: spirits25 от Октябрь 18, 2012, 15:17
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить?
Я не знаю как сделать бесконечную прокрутку с изменением даты в шапке. В этом проблема. Можете пример?
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: компонент timeline
«
Ответ #10 :
Октябрь 21, 2012, 21:26 »
Цитата: _OLEGator_ от Октябрь 19, 2012, 16:39
Тему годовой давности решили поднять?
to panAlexey:
Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал.
если про "тут" то согласен.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: компонент timeline
«
Ответ #11 :
Октябрь 21, 2012, 21:41 »
Цитата: spirits25 от Октябрь 19, 2012, 16:48
Цитата: panAlexey от Октябрь 19, 2012, 16:35
Цитата: spirits25 от Октябрь 18, 2012, 15:17
У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Это достаточно просто. В чем проблема?
Ползунок настрить?
Я не знаю как сделать бесконечную прокрутку с изменением даты в шапке. В этом проблема. Можете пример?
если на словах, то у тебя есть грубо отрезок А--------Б--------С----------->Д
первоначальная длина АД, область видимости на экране БС. БС может меняться в зависимости от ширины окна. ты двигаешь БС, если оно наезжает на Д просто приращиваешь Д, если на А - уменьшаешь А. получается бесконечная прокрутка. Рисуешь все опираясь на разницу Б-А - получается точка отсчета для паинтера.
"с изменением даты в шапке." - тут уже кто как предпочитает, можно привязать дату к Б (привычный порядок). но удобнее к середине отрезка БС.
это типа я описал какие переменные нужны. или требовалось что-то еще?
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
spirits25
Гость
Re: компонент timeline
«
Ответ #12 :
Октябрь 22, 2012, 10:52 »
Если всё так просто, почему никто не может минимальный пример дать? или никто такого не писал? я с рисованием не дружу.
Записан
Bepec
Гость
Re: компонент timeline
«
Ответ #13 :
Октябрь 22, 2012, 12:18 »
Потому что это простейшая арифметика. Если Курсор >= ВидимыйКонец тогда двигай. И обратно. PanAlexey чётко и понятно описал.
Или вас озадачивает именно процесс рисования? Если он - то я могу вам накидать проектик (кривой по рисункам, ибо не художник, но без логики)
PS QэээSlider вам чем не подходит? идеальный же кандидат
Записан
spirits25
Гость
Re: компонент timeline
«
Ответ #14 :
Октябрь 22, 2012, 12:26 »
Да, меня озадачивает сам процесс рисования=) я понял смысл, ЧТО нужно делать, но мне бы минимальный простой пример КАК=)
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...