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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Установка минимального\максимального значения для QChart  (Прочитано 2466 раз)
Crazy Sage
Гость
« : Июнь 10, 2019, 14:58 »

Приветствую, обнаружил странное поведение QChart'а, не понимаю, что я делаю не так.
Хочу сделать график, у которого будут отображаться на оси ключевые значения, решил использовать для этого QCategoryAxis

Код:
    QChart* side_glissade_chart = new QChart;

    QLineSeries* side_glissade_top_line = new QLineSeries;
    side_glissade_top_line->append(0, faf_alt + dh_faf_plus);
    side_glissade_top_line->append(1000 + m_IfDist, faf_alt + dh_faf_plus);
    side_glissade_top_line->append(1000 + m_IfDist + faf_map_dist, map_alt + dh_map_plus);
    side_glissade_top_line->append(1000 + m_IfDist + m_FafDist, m_TdpDH);

    side_glissade_chart->addSeries(side_glissade_top_line);

    QLineSeries* side_glissade_center_line = new QLineSeries;
    side_glissade_center_line->append(0, faf_alt);
    side_glissade_center_line->append(1000 + m_IfDist, faf_alt);
    side_glissade_center_line->append(1000 + m_IfDist + faf_map_dist, map_alt);
    side_glissade_center_line->append(1000 + m_IfDist + m_FafDist, 0);

    side_glissade_chart->addSeries(side_glissade_center_line);

    QLineSeries* side_glissade_bottom_line = new QLineSeries;
    side_glissade_bottom_line->append(0, faf_alt - dh_faf_minus);
    side_glissade_bottom_line->append(1000 + m_IfDist, faf_alt - dh_faf_minus);
    side_glissade_bottom_line->append(1000 + m_IfDist + faf_map_dist, map_alt - dh_map_minus);
    side_glissade_bottom_line->append(1000 + m_IfDist + m_FafDist, -m_TdpDH);

    side_glissade_chart->addSeries(side_glissade_bottom_line);

    QLineSeries* side_glissade_decision_line = new QLineSeries;
    side_glissade_top_line->append(0, m_DecicionHeight);
    side_glissade_top_line->append(1000 + m_IfDist + m_FafDist, m_DecisionHeight);

    side_glissade_chart->addSeries(side_glissade_decision_line);

    side_glissade_chart->createDefaultAxes();

    QCategoryAxis* side_glissade_y_axis = new QCategoryAxis;
    side_glissade_y_axis->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
    side_glissade_y_axis->append(tr("VPR (%1)").arg(m_DecicionHeight), m_DecicionHeight);
    side_glissade_y_axis->append(tr("H MAP (%1)").arg(map_alt), map_alt);
    side_glissade_y_axis->append(tr("dH FAF- (%1)").arg(faf_alt - dh_faf_minus), faf_alt - dh_faf_minus);
    side_glissade_y_axis->append(tr("H FAF (%1)").arg(faf_alt), faf_alt);
    side_glissade_y_axis->append(tr("dH FAF+ (%1)").arg(faf_alt + dh_faf_plus), faf_alt + dh_faf_plus);
    side_glissade_y_axis->setRange(-m_DecicionHeight, faf_alt + dh_faf_plus);
    side_glissade_chart->setAxisY(side_glissade_y_axis);

    ui->sideGlissadeView->setChart(side_glissade_chart);

В целом всё неплохо, но хочу добавить пространства сверху (1.png)

Если я пытаюсь просто сделать    
Код:
side_glissade_y_axis->setRange(-m_DecicionHeight, (faf_alt + dh_faf_plus)*1.2);
то по оси запас появляются, но на графики это не влияет (2.png)

Если же я убираю createDefaultAxes(), то масштаб выходит какой-то совсем странный (3.png)

Вопрос, что я делаю не так и как правильно работать с осями категорий чтобы данные на графике масштабировались вместе с ними?
« Последнее редактирование: Июнь 10, 2019, 15:10 от Crazy Sage » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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