Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: SLiDER от Февраль 08, 2005, 18:02



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

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


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: Admin от Февраль 09, 2005, 11:09
Я зум у себя вообще выключик. Кривоватая штучка.

Вообще qwt имееет несколько недоделок, с которыми хочу поборотся на днях.


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: SLiDER от Февраль 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]


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: SLiDER от Февраль 10, 2005, 00:06
Нет, так как я написал выше нефига не выйдет. Ф-я scaleRect() объявлена private членом даже не самого QwtPlotZoomer, а его предка QwtPlotPicker, так что номер практически дохлый. Правдв после этого мне совсем непонятно ремарка оставленная авторами в документации. Собственно как они это себе представляют.  :(  Завтра буду ковырять исходники, может что в голову и придет, уж очень не хочется их править.  :(
А вообще, у меня просьба, ко всем кто имеет хоть какойто опыт работы с этой штукой, поделится обнаруженными багами. После непродолжительных тестов мне показалось что сам QwtPlot, да и QwtPlotPicker ведут себя в общем то прилично. А вот QwtPlotZoomer помоему неработает, в принципе, ни прикаких обстоятельствах, кроме их же (авторов) тривиального примера.


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: Admin от Февраль 10, 2005, 01:03
Я c QWT достаточно давно
еще с 2 версии

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

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

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

PS: свой график лень писать, использую qwt


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: Racheengel от Февраль 11, 2005, 13:13
ну тогда 3-4 :) я тоже с QWT работал, да и сейчас для нового проекта, наверно, буду его юзать. Глючноват, конечно, но помогает Ж)


Название: QWT -> QwtPlot и QwtPlotZoomer
Отправлено: SLiDER от Февраль 11, 2005, 14:34
Цитировать
- нет верхних и правых линеек или я не нашел
- нельзя несколько осей задать


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

А вот зумер мне так до сих пор и не удалось победить. 8-(