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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: перерисовка QChart новыми данными.  (Прочитано 4927 раз)
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;"  - работает корректно, но при этом будет течь память, что расстраивает.
Есть ли законный выход из сложившейся ситуации?



Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #1 : Апрель 25, 2017, 19:14 »

Если закомментировать  "delete oldSignalData;"  - работает корректно, но при этом будет течь память, что расстраивает.

Сильно не расстраивайтесь, оно и без вас течёт Улыбающийся. Тут немного обсуждали.
Записан

Пока сам не сделаешь...
zemlemer
Гость
« Ответ #2 : Апрель 25, 2017, 20:51 »

Сильно не расстраивайтесь, оно и без вас течёт Улыбающийся. Тут немного обсуждали.

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

Сообщений: 2679


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


Просмотр профиля
« Ответ #3 : Апрель 25, 2017, 21:20 »

Имхо QChart - это редкое Г. Грустный
Каким образом они надеются его еще и продавать - я хз.

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

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

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 не волк, в лес не уйдёт
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Апрель 26, 2017, 10:13 »

Цитировать
Имхо QChart - это редкое Г. Грустный

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

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

Ох, то-ли еще будет... Грустный
Записан

ArchLinux x86_64 / Win10 64 bit
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #5 : Апрель 26, 2017, 12:02 »

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

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

Пока сам не сделаешь...
zemlemer
Гость
« Ответ #6 : Апрель 27, 2017, 14:34 »

Нашел я некоторый workaroud. Если перед удалением предыдущего QChart-а передать QChartview указатель на NULL ( signalView->setChart(NULL)Подмигивающий - то это решит проблему.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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