Название: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 12, 2011, 15:32 Добрый день!
Задача такая, что интегратор через некоторые промежутки времени выдаёт значения, которые сразу надо отображать на графике. В массив значения добавлять, а потом выводить его на грфик не вариант, потому что время интегрирования может быть достаточно большое. В следствии возникает вопрос: как добавлять точку (Time, X) на график в Qwt в каждый момент времени Time? Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Igors от Июль 12, 2011, 15:56 Задача такая, что интегратор через некоторые промежутки времени выдаёт значения, которые сразу надо отображать на графике. В массив значения добавлять, а потом выводить его на грфик не вариант, потому что время интегрирования может быть достаточно большое. В следствии возникает вопрос: как добавлять точку (Time, X) на график в Qwt в каждый момент времени Time? Судя по тому что Вы рассказали - у Вас классический случай использования нитки (потока) которая решает конкретную задачу (интегрирование). Примерный сценарий- заводится нитка (QThread). Появившаяся новая точка скармливается этой нитке которая занимается интегрированием. Если (еще) новая точка пришла до окончания интегрирования - оно должно быть прервано и (пере)запущено уже с учетом новых точек - когда все пришедшие данные отработаны, интегрирующая нитка посылает сигнал главной, мол "готово, перерисуй (обнови) UI" Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 12, 2011, 16:21 Igors, спасибо большое за алгоритм,
и такой вот ещё банальный вопрос: как к имеющемуся графику добавить одну единственную точку? :) Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Igors от Июль 12, 2011, 17:03 и такой вот ещё банальный вопрос: как к имеющемуся графику добавить одну единственную точку? :) Ну этого я не знаю :) Если Вы имеете ввиду UI - то никак, потому что (опять-таки исходя из того что Вы рассказали) точки приходят асинхронно. Поэтому придется каждый раз перерисовывать весь график (не беда). А с точки зрения "интегрирующего" - ну вставил точку в контейнер (std::vector или др. у Вас) - и пошел считать Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 13, 2011, 08:03 Igors, спасибо большое за ответ. Теперь стало ясно.
Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 13, 2011, 09:24 Ещё такой вопрос возник: как можно отобразить график с помощью отдельных точек, не соединённых между собой линией? Получаемый график с разрывами, и если отрисовывать с помощью QwtPlotCurve то в местах разрыва рисутеся вертикальная линия.
Помогите с решением. Название: Re: Qwt: Как добавить одну точку на график? Отправлено: madRoger от Июль 13, 2011, 12:01 Цитировать как можно отобразить график с помощью отдельных точек, не соединённых между собой линией? Код: QwtPlotCurve::setStyle(QwtPlotCurve::Dots) Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 16, 2011, 20:31 madRoger, спасибо!
Название: Re: Qwt: Как добавить одну точку на график? Отправлено: climber от Июль 18, 2011, 09:43 По поводу добавления одной точки. Обратите взор на пример из qwt cpuplot. Там показано как раз в секунду добавлять точку на график. Безусловно интервал отображения меняете на любой, даже асинхронный. Для этого, как вам советовали выше, в потоке вычислете значение точки (x,y) и по сигналу от потока finished() передаете данные в обработчик события, в котором происходит отрисовка точки. Я реализовывал алгоритм в котором с интервалом 1 сек. с сервера считывается массив данных(около 10 тыс. сигналов), который нужно отображать в реальном времени (до 12 графиков на курве) на графике. Все работает без тупняков.
Название: Re: Qwt: Как добавить одну точку на график? Отправлено: Joilo от Июль 18, 2011, 10:15 climber, спасибо за совет.
|