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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QwtPlot, QwtPlotMarkes  (Прочитано 3919 раз)
carhun
Гость
« : Август 10, 2012, 15:12 »

Добрый день.
У меня есть допустим 10 QwtPlot'в на к-ых нарисовано на каждом по 5-10 кривых QwtPlotCurve ( к-ые плюс ко всему еще и solid).
И дальше, что мне надо мне надо завести маркер на каждую кривую и в нем отображать значение оси Y , к-ое соотвествуется определенном Х.

Значение Х я беру исходя из QwtPlotPicker'a - QwtPlotPicker - SIGNAL(moved(QPointF)).

Так вот проблема заключается в том, что если я начну возить мышкой по графику, то соотвественно все значения надо пересчитывать, и заново атаачить на плоты и соотв. реплотить плоты... В связи с этим возникают очень большие лаги....

Как с этим можно бороться?

Как сделать если у меня есть допустим на каждый плот QwtPlotPicker и как тогда, что бы когда я вожу по одному из плотов, на отсальных плотах трекеры тоже отображались?

С уважением,
 carhun
« Последнее редактирование: Август 10, 2012, 15:57 от carhun » Записан
kvrus
Гость
« Ответ #1 : Август 29, 2012, 11:26 »

Как то год назад думал над этим же вопросом. Нужны были маркеры: сначала сделал так же как и вы пробовал перетаскивать маркер и все тормозило. Потом пошел дальше сделал оверлей прозрачный виджет поверх плоттера на котором обрабатывал перетаскивание и перерисовку (при этом плоттер не перерисовывался), все вроде работало быстренько, но
только оверлей перехватывал все события мыши над плоттером, соответственно зуммер не работал. Такой вариант не понравился и я вообще забил на тему. Недавно потребовалось делать задачу: на график накладывать маску. Это так же требует манипуляций с перетаскиванием объектов мышью по плоттеру. Реализовал через класс CanvasPicker (помоему в примерах QWT он есть). Он работает как обработчик событий для QWT очень быстро, можно поставить фильтр на события. Если в следующий раз соберусь делать маркер, то сделаю через этот класс. Попробуйте использовать его.   
Записан
carhun
Гость
« Ответ #2 : Сентябрь 10, 2012, 16:04 »

Спасибо, именно так и решил, через прозрачный виджет наложенный сверху...

Также, если кому-то может надо будет, то в trunk'e QWT сейчас есть класс QwtPlotOverlay , к-ый делает по сути тоже самое...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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