Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: vunder от Март 28, 2011, 11:35



Название: [Решено] Несколько qwt-графиков
Отправлено: vunder от Март 28, 2011, 11:35
Вопрос следующего характера. Нужно отображать несколько графиков (графики спектра). Особенность в том, что отображаемые частотные диапазоны не последовательны, это могут быть куски из разных диапазонов, а рисовать их нужно сразу друг за другом, без пустых промежутков, как это делает qwt.
В качестве примера прилагаю скрин. Так два диапзона: 100-110 и 200-203, они разделены белой вертикальной прерывистой линией (это компонент TChart в Delphi).
Как такое можно сделать на qwt. Можеть кто другую библиотеку использовал?


Название: Re: Несколько qwt-графиков
Отправлено: alexman от Март 28, 2011, 11:50
void QwtPlotItem::attach( QwtPlot* plot )
В данном случае можно использовать QwtPlotCurve.


Название: Re: Несколько qwt-графиков
Отправлено: vunder от Март 28, 2011, 13:08
Для тех "кто в танке и в каске", а также для тех, кто не читает текст сообщения: диапазоны графиков отличаются друг от друга. Вот, что получается, если просто добавить 2 графика 100-110 и 200-210

А мне нужно, чтобы графики следовали друг за другом без разрыва


Название: Re: Несколько qwt-графиков
Отправлено: alexman от Март 28, 2011, 13:17
Можно координаты у одного из графиков пересчитать, то есть сделать чтобы сразу 2-ой шел за 1-ым! Ну а для отображения шкалы переопределить метод
Код:
QwtText QwtAbstractScaleDraw::label( double value ) 	 const [virtual]


Название: Re: Несколько qwt-графиков
Отправлено: vunder от Март 28, 2011, 13:21
А переопределение отображения графика нет такого?
Как вариант пересчитывать значения по оси абсцисс и менять подписи к шкале, может еще варианты?


Название: Re: Несколько qwt-графиков
Отправлено: alexman от Март 28, 2011, 13:51
void QwtPlotItem::draw( QPainter* p, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRect& viewRect ) const


Название: Re: Несколько qwt-графиков
Отправлено: vunder от Март 28, 2011, 13:52
И что мне делать в этом методе?


Название: Re: Несколько qwt-графиков
Отправлено: alexman от Март 28, 2011, 14:55
А переопределение отображения графика нет такого?
Ответ:
Код:
void QwtPlotItem::draw( QPainter* p, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRect& viewRect ) const

Как минимум рисовать что-то ;)


Название: Re: Несколько qwt-графиков
Отправлено: vunder от Март 28, 2011, 15:00
Я конечно понимаю, что на тупой вопрос тупой ответ, но не настолько же. Я итак знаю, что можно переопредлить метод draw() но что именно там делать, какой алгоритм работы для данного случая?


Название: Re: Несколько qwt-графиков
Отправлено: alexman от Март 28, 2011, 15:24
Да по сути тоже самое: о разрывах в классе знаем, во время перерисовки сдвигаем данные нужным образом. virtual QwtDoubleRect boundingRect() const; - стоит еще переопределить!


Название: Re: Несколько qwt-графиков
Отправлено: vunder от Апрель 04, 2011, 12:54
Использовал первый вариант: значения по оси ординат перерассчитывались таким образом, чтобы они последовательно шли друг за другом, без "разрывов". Также был создан класс наследник от QwtScaleDraw, в котором был перекрыт метод lable()