Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: StatuS74 от Сентябрь 22, 2011, 08:16



Название: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 08:16
прошелся по форум не нашел ответ. как замутить динамическую обрисовку графика. то есть суть в том что бы я нажал на кнопку график строился по данных из файла которые приходят с програматора. статически сделал все работает. а как динамически не знаю ещё и с возможностью остановить рисование и выбрать другой график. подскажите если кто с этим сталкивался


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 08:30
В голову приходит только создать клас для рисования от QTheard и уже там через сигналы и слоты перекидывать сцену. а при нажатии на другую кнопку убивать поток. и запускать  тот же поток но с новыми параметрами... есть ещё более логичные варианты ?


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 09:42
По таймеру можно.


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 10:03
в смысле ?
тут суть же например 1-й график отрисовывается. потом захотел посмотреть что со вторым выбрал второй отрисовывается глянул на пару секунд потом 3 потом опять 1 хочу посмотреть что накачал. по этому ограничивается временью мне кажется не логично


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 10:39
Какова формулировка - такой и ответ. Не понял сути сразу :)

Ну так можно же при выборе типа графика поменять контент в области?


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 10:49
объесню более подробно.
есть 12 датчиков которые тестируются примерно 20-40 минут. тест заключается в обмене сообщениями. я из сообщения которое посылает тестируемый объект выдергиваю то что мне надо. и по этим данным строю график (данные записываю в фаил для каждого датчика). суть в том что есть 12 кнопок (соответственно кол-ву датчиков). я нажимаю на 1-ю кнопку рисуется  график так сказать в реальном времени. потом захотел я например глянуть что происходит с 7 датчиком нажимаю мне начинает отрисовка идти 7 датчика. и так произвольно могу выбирать датчики.


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 12:58
Так в чем сложность то? Вы не знаете как рисовать? Или же не можете выбрать средтва для рисовки?


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 13:21
я реализовал статическри рисование. мне не надо динамически. я не знаю как сделать так что бы он постоянно рисовал пока не нажата другая кнопка графика. вот в этом и проблема.
Рисую я на QGraphicsScene. потмо возвращаю ей и связываю с объектом на виджите GraphicView


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 13:50
Опять размытая формулировка. Что значит
Цитировать
постоянно рисовал
?


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 13:53
это значит что пока моя программа и тестируемый датчик работаю шла отрисовка на экране графика в реальном времени. у меня сейчас статическри рисуется. то есть нажал отрисовал сколько данных есть. потом опять нажал отпять отрисовалось.


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 13:56
Сообщения же приходят от датчика через промежуток времени или когда данные изменились?


Название: Re: динамика графика
Отправлено: StatuS74 от Сентябрь 22, 2011, 14:00
ну промижуток времени зависит от количества датчиков. ну грубо говоря можно поставить прорисовку 1 раз в 5 секунд


Название: Re: динамика графика
Отправлено: _OLEGator_ от Сентябрь 22, 2011, 14:51
Если используешь QGraphicsScene, то по нормальному можно реализовать своего наследника от QGraphicsItem, который будет представлять из себя одну линию графика.
Соответственно тебе нужно 12 таких объектов. Показывать только необходимы элемент (QGraphicsItem::setVisible), у самого элемента реализовать функцию добавления следующей точки, в которой можно вызвать перерисовку сцены.

Вопросы?

Можно использовать Qwt, но я с ним не знаком.


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 15:55
Например:
1. Хранишь переменную тип графика и меняешь значение при переключении.
2. В начале запускаешь таймер с timeout = 5сек.
3. По таймеру получаешь значения от нужного датчика и рисуешь (ну а рисовку можно по разному реализовать).


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 15:56
Соответственно тебе нужно 12 таких объектов.
Если данные однообразные, то необязательно все 12 объектов реализовывать.


Название: Re: динамика графика
Отправлено: _OLEGator_ от Сентябрь 22, 2011, 16:04
имелось ввиду 12 экземпляров объектов данного класса. Класс графика - один общий для всех.


Название: Re: динамика графика
Отправлено: alexman от Сентябрь 22, 2011, 16:07
имелось ввиду 12 экземпляров объектов данного класса. Класс графика - один общий для всех.
сорри :) Но как раз классов может быть несколько, все зависит от данных.