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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить пределы (min и max), в которых построены оси у объекта QwtPlot ?  (Прочитано 4798 раз)
foufou
Гость
« : Январь 18, 2011, 21:54 »

Нужно мне при помощи QwtPlot рисовать графики, но на "квадратной" координатной сетке, т.е. на такой сетке, у которой присутствуют не только левая ось Y и нижняя X, но и правая ось Y вместе с верхней осью X. Важно, чтобы пределы, в которых нарисована правая ось Y совпадали с пределами левой оси Y. Допустим, левая ось Y построена в пределах от 18.1 до 20.1 с шагом 0.2. В этом случае правая ось Y тоже должна быть построена в этих же пределах. Аналогично с осями X - верхняя ось должна повторять нижнюю.

Как задать пределы вроде понятно - при помощи setAxisScale. Например, вот так:
qwtPlot->setAxisScale(QwtPlot::xTop,minX,maxX);

Однако не получается считать текущие пределы оси. Подскажите пожалуйста, кто имеет опыт работы с qwt, как это можно сделать ?

Пытаюсь делать вот так:

QwtScaleWidget *qwtScB = qwtPlot->axisWidget(QwtPlot::xBottom);
QwtScaleDraw *scdwB = qwtScB->scaleDraw();

int minX = scdwB->scaleDiv().lowerBound();
int maxX = scdwB->scaleDiv().upperBound();

qwtPlot->setAxisScale(QwtPlot::xTop,minX,maxX);

Вроде работает, но как-то криво. Например, когда делаю зум несколько раз, заметно, что парные оси начинают не совпадать.
Также работает это как-то нестабильно. Замечал, что на некоторых наборах вообще получается ерунда.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #1 : Февраль 20, 2011, 13:23 »

попробуй после изменения данных и до твоего кода вызывать updateAxisScales() (по моему так), должно помочь.
Записан

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 не волк, в лес не уйдёт
Dimas
Чайник
*
Offline Offline

Сообщений: 50



Просмотр профиля
« Ответ #2 : Апрель 09, 2012, 10:00 »

По поводу получения текущих пределов осей. Сам столкнулся недавно. Тема старая, но для следующих поколений вот решение:

Код:
    
    // исходные границы графика по оси y
    double isb_yb,isb_yt;
    // получаем карту шкалы оси y на канве
    QwtScaleMap sm = m_ui.myPlot->canvasMap(QwtPlot::yLeft);
    isb_yb = sm.s1();
    isb_yt = sm.s2();
Записан

qt 4.8.6, qt 5.12.4
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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