Russian Qt Forum

Qt => Вопросы новичков => Тема начата: zemlemer от Апрель 25, 2017, 19:00



Название: перерисовка QChart новыми данными.
Отправлено: zemlemer от Апрель 25, 2017, 19:00
Добрый день.
Возникла проблема при перерисовке графика новыми данными. Почти работает, но....
Код следующий
где-то в заголовочном файле
Код:
private:
................
    QChartView  *signalView;
    QLineSeries *signalSamples;
................

Реализация

Код:
................
signalSamples->clear();
................
заполнение signalSamples->append(xVal, yVal);
................

    QChart *oldSignalData = signalView->chart();

    signalData = new QChart();
    signalData->legend()->hide();
    signalData->addSeries(signalSamples);
    signalData->createDefaultAxes();
    signalData->setTitle(comboTests->currentText());
    signalView->setChart(signalData);

    if(NULL != oldSignalData){
       delete oldSignalData;
    }


Если оставить как есть - при повторной перерисовке графика Qt выдает сообщение "Can not find axis on the chart." и график не перерисуется.
Если закомментировать  "delete oldSignalData;"  - работает корректно, но при этом будет течь память, что расстраивает.
Есть ли законный выход из сложившейся ситуации?





Название: Re: перерисовка QChart новыми данными.
Отправлено: ViTech от Апрель 25, 2017, 19:14
Если закомментировать  "delete oldSignalData;"  - работает корректно, но при этом будет течь память, что расстраивает.

Сильно не расстраивайтесь, оно и без вас течёт :). Тут (http://www.prog.org.ru/topic_31117_0.html) немного обсуждали.


Название: Re: перерисовка QChart новыми данными.
Отправлено: zemlemer от Апрель 25, 2017, 20:51
Сильно не расстраивайтесь, оно и без вас течёт :). Тут (http://www.prog.org.ru/topic_31117_0.html) немного обсуждали.

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


Название: Re: перерисовка QChart новыми данными.
Отправлено: Racheengel от Апрель 25, 2017, 21:20
Имхо QChart - это редкое Г. :(
Каким образом они надеются его еще и продавать - я хз.

Мы заюзали ватэто у себя: https://sourceforge.net/projects/qsint/ (модуль QSint::Charts)

Оно простенькое довольно, но использует Qt DataModel в кач-ве источника данных и вроде проблем с перерисовкой не было...


Название: Re: перерисовка QChart новыми данными.
Отправлено: kuzulis от Апрель 26, 2017, 10:13
Цитировать
Имхо QChart - это редкое Г. Грустный

Пожалуй, соглашусь... При использовании OpenGL режима - рисует совсем по-другому
(кривулины другие получаются, по крайней мере в QML).

Вот щас нужно - по быстрому наклепать графичков, работая в QML.
С дуру связался с QtCharts, охх, чую, попарит оно мозг..
Они, жопошники, даже не шевелются и баги вообще игнорят
(я уже два бага нашел - один с OpenGL, другой с тем, что на осях даты-времени
оно игнорит мультистроки, т.е. \n разделитель).

Ох, то-ли еще будет... :(


Название: Re: перерисовка QChart новыми данными.
Отправлено: ViTech от Апрель 26, 2017, 12:02
Правильно ли я понимаю, что корректного выхода из сложившийся ситуации нет как минимум да выхода следующей версии?

Судя по активности в багтрекере, я бы на это особо не рассчитывал.


Название: Re: перерисовка QChart новыми данными.
Отправлено: zemlemer от Апрель 27, 2017, 14:34
Нашел я некоторый workaroud. Если перед удалением предыдущего QChart-а передать QChartview указатель на NULL ( signalView->setChart(NULL);) - то это решит проблему.