Russian Qt Forum
Ноябрь 01, 2024, 16:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Несколько qwt-графиков  (Прочитано 6513 раз)
vunder
Гость
« : Март 28, 2011, 11:35 »

Вопрос следующего характера. Нужно отображать несколько графиков (графики спектра). Особенность в том, что отображаемые частотные диапазоны не последовательны, это могут быть куски из разных диапазонов, а рисовать их нужно сразу друг за другом, без пустых промежутков, как это делает qwt.
В качестве примера прилагаю скрин. Так два диапзона: 100-110 и 200-203, они разделены белой вертикальной прерывистой линией (это компонент TChart в Delphi).
Как такое можно сделать на qwt. Можеть кто другую библиотеку использовал?
« Последнее редактирование: Апрель 11, 2011, 19:04 от vunder » Записан
alexman
Гость
« Ответ #1 : Март 28, 2011, 11:50 »

void QwtPlotItem::attach( QwtPlot* plot )
В данном случае можно использовать QwtPlotCurve.
Записан
vunder
Гость
« Ответ #2 : Март 28, 2011, 13:08 »

Для тех "кто в танке и в каске", а также для тех, кто не читает текст сообщения: диапазоны графиков отличаются друг от друга. Вот, что получается, если просто добавить 2 графика 100-110 и 200-210

А мне нужно, чтобы графики следовали друг за другом без разрыва
Записан
alexman
Гость
« Ответ #3 : Март 28, 2011, 13:17 »

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

А переопределение отображения графика нет такого?
Как вариант пересчитывать значения по оси абсцисс и менять подписи к шкале, может еще варианты?
Записан
alexman
Гость
« Ответ #5 : Март 28, 2011, 13:51 »

void QwtPlotItem::draw( QPainter* p, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRect& viewRect ) const
Записан
vunder
Гость
« Ответ #6 : Март 28, 2011, 13:52 »

И что мне делать в этом методе?
Записан
alexman
Гость
« Ответ #7 : Март 28, 2011, 14:55 »

А переопределение отображения графика нет такого?
Ответ:
Код:
void QwtPlotItem::draw( QPainter* p, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRect& viewRect ) const

Как минимум рисовать что-то Подмигивающий
Записан
vunder
Гость
« Ответ #8 : Март 28, 2011, 15:00 »

Я конечно понимаю, что на тупой вопрос тупой ответ, но не настолько же. Я итак знаю, что можно переопредлить метод draw() но что именно там делать, какой алгоритм работы для данного случая?
Записан
alexman
Гость
« Ответ #9 : Март 28, 2011, 15:24 »

Да по сути тоже самое: о разрывах в классе знаем, во время перерисовки сдвигаем данные нужным образом. virtual QwtDoubleRect boundingRect() const; - стоит еще переопределить!
Записан
vunder
Гость
« Ответ #10 : Апрель 04, 2011, 12:54 »

Использовал первый вариант: значения по оси ординат перерассчитывались таким образом, чтобы они последовательно шли друг за другом, без "разрывов". Также был создан класс наследник от QwtScaleDraw, в котором был перекрыт метод lable()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 21.