Одновременно не выводятся оба QLineSeries

101
01 декабря 2020, 20:40

В данном фрагменте кода я пытаюсь вывести некий график с двумя Series. Для более быстрого вывода я удаляю, заполняю Series и затем добавляю их обратно. Проблема в том что при одновременном удалении и добавлении Series 2 не выводится.

  • Series 1 --- это обычная рандомная функция.
  • Series 2 --- уровень 0, для теста на данный момент 400.

В данном случае будет выведен только Series1:

void MainWindow::_drawGraphic(QVector<double> dataArray, const double 
                  &minValueOfDataArray, const double &maxValueOfDataArray)
{
//Вывод графика
    Series1->clear();
    Series2->clear();
    Chart1->removeSeries(Series1);
    Chart1->removeSeries(Series2);
    for(int i=0; i<dataArray.size()-1; i++)
    {
        Series1->append(i, dataArray[i]);
        Series2->append(i, 400);
    }
    axisX->setRange(firstCount, secondCount);
    axisY->setRange(minValueOfDataArray, maxValueOfDataArray);
    axisZero->setRange(minValueOfDataArray, maxValueOfDataArray);
    Chart1->addSeries(Series1);
    Chart1->addSeries(Series2);
}

[Неправильная работа]:

Если я буду удалять только Series1, то все будет работать верно и Series2 тоже появится, но вывод будет очень замедлен, а при больших данных программа вовсе упадет:

//Вывод графика
    Series1->clear();
    Series2->clear();
    Chart1->removeSeries(Series1);
    //Chart1->removeSeries(Series2);
    for(int i=0; i<dataArray.size()-1; i++)
    {
        Series1->append(i, dataArray[i]);
        Series2->append(i, 400);
    }
    axisX->setRange(firstCount, secondCount);
    axisY->setRange(minValueOfDataArray, maxValueOfDataArray);
    axisZero->setRange(minValueOfDataArray, maxValueOfDataArray);
    Chart1->addSeries(Series1);
    //Chart1->addSeries(Series2);

[Правильная работа 'Зеленая линия Series2']:

Есть какие-либо предложения или решения? Заранее спасибо.

В общем помощи нигде не нашел, пришлось ставить qCustomPlot, такой проблемы там не было выявлено

READ ALSO
Очистить буфер ввода

Очистить буфер ввода

Пытаюсь написать кроссплатформенную функцию, аналог system("pause");

120
Как добавить программу в автозагрузку Windows используя C/C++?

Как добавить программу в автозагрузку Windows используя C/C++?

Можно ли добавить программу в автозагрузку с помощью C/C++? (без WinAPI)

129
Объясните как работает алгоритм с++

Объясните как работает алгоритм с++

Как работает этот алгоритм, в особенности интересует 13,15,16,18 строкиКонечно ясно что он выводит номер последнего вхождения подстроки и количество...

106
Не полное выделение памяти с++ malloc

Не полное выделение памяти с++ malloc

От чего у меня выделяется память только для одного элемента?

132