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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWT -> QwtPlot и QwtPlotZoomer  (Прочитано 12953 раз)
SLiDER
Гость
« : Февраль 08, 2005, 18:02 »

Проблема следующая. Если цепляеш QwtPlotZoomer к QwtPlot, до вывода на него (QwtPlot) какой-либо информации, то зумер работает совершенно неадекватно. А именно, считает, что базовым размером графика является размер 1000х1000, и в дальнейшем что бы с ним не делали рассчитывает зумминг исходя из этого размера. Например при нажатии на левую кнопку мыши масштабирует график именно до этого размера, независимо от того какие данные на него выведены.

Вопрос такой. Каким образом заставить QwtPlotZoomer следить за максимальными и минимальными значениями выводимыми на график или хотябы в нужный момент самому ему их подсовывать.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Февраль 09, 2005, 11:09 »

Я зум у себя вообще выключик. Кривоватая штучка.

Вообще qwt имееет несколько недоделок, с которыми хочу поборотся на днях.
Записан
SLiDER
Гость
« Ответ #2 : Февраль 09, 2005, 12:37 »

Вот нашел сегодня в документации феньку, на которую сразу не обратил внимания:
Цитировать
Warning:
Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is FALSE leaves the axis in an 'intermediate' state. In this case, to prevent buggy behaviour, your must call QwtPlot::replot() before calling QwtPlotPicker::scaleRect(), QwtPlotZoomer::scaleRect(), QwtPlotPicker::QwtPlotPicker() or QwtPlotZoomer::QwtPlotZoomer(). This quirk will be removed in a future release.


Выходит, что передкаждым зумом нужно обязательно (покрайней мере в этой версии - 4.2.0) вызывать функцию перерисовки графика (QwtPlot::replot()), иначе пахать небудет. 8-( Т.е. решение такое наследуйтесь от QwtPlotZoomer переопределяйте конструктор (для передачи в него указателя на QwtPlot) и функцию scaleRect() вызывая в ней перерисовку QwtPlot. Вобщем сплошной геморой 8-(. Создатели могли бы и сами об этом позаботится !!!
Пойду попробую, может что и выйдет.[/b][/quote]
Записан
SLiDER
Гость
« Ответ #3 : Февраль 10, 2005, 00:06 »

Нет, так как я написал выше нефига не выйдет. Ф-я scaleRect() объявлена private членом даже не самого QwtPlotZoomer, а его предка QwtPlotPicker, так что номер практически дохлый. Правдв после этого мне совсем непонятно ремарка оставленная авторами в документации. Собственно как они это себе представляют.  Грустный  Завтра буду ковырять исходники, может что в голову и придет, уж очень не хочется их править.  Грустный
А вообще, у меня просьба, ко всем кто имеет хоть какойто опыт работы с этой штукой, поделится обнаруженными багами. После непродолжительных тестов мне показалось что сам QwtPlot, да и QwtPlotPicker ведут себя в общем то прилично. А вот QwtPlotZoomer помоему неработает, в принципе, ни прикаких обстоятельствах, кроме их же (авторов) тривиального примера.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Февраль 10, 2005, 01:03 »

Я c QWT достаточно давно
еще с 2 версии

баги или фичи  которые помню:
- странно меняется размер виджета, в зависимости от данных
- зуум я ваще нафиг отключил
- нет верхних и правых линеек или я не нашел
- нельзя несколько осей задать

еще че вспомню напишу

вообще народу на этом форумеработающих  с qwt 2-3 человека

PS: свой график лень писать, использую qwt
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Февраль 11, 2005, 13:13 »

ну тогда 3-4 Улыбающийся я тоже с QWT работал, да и сейчас для нового проекта, наверно, буду его юзать. Глючноват, конечно, но помогает Ж)
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
SLiDER
Гость
« Ответ #6 : Февраль 11, 2005, 14:34 »

Цитировать
- нет верхних и правых линеек или я не нашел
- нельзя несколько осей задать


Ну это то как раз есть, посмотри их основной пример (он даже на скриншоте на сайте отображен), там все достаточно ясно.

А вот зумер мне так до сих пор и не удалось победить. 8-(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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