BlinCT
June 4, 2021, 1:22 a.m.

Заполнение ChartView с передачей в С++ часть по указателю

Всем привет.
Возникла необходимость передавать данный обьект в С++ и там создавать оси и заполнять данными.
Ниже пример функции

  1. createSerie(QQuickItem *chartview)
  2. {
  3. if(!chartview)
  4. {
  5. return;
  6. }
  7.  
  8. const QMetaObject *mo = chartview->metaObject();
  9.  
  10. if(std::strcmp(mo->className(), "QtCharts::DeclarativeChart") != 0)
  11. return;
  12. int ix = mo->indexOfEnumerator("SeriesType");
  13. QMetaEnum me = mo->enumerator(ix);
  14. int type = me.keyToValue("SeriesTypeLine");
  15.  
  16. QDateTimeAxis *axis_x = new QDateTimeAxis();
  17. QMetaObject::invokeMethod(chartview, "axisX", Qt::DirectConnection, Q_RETURN_ARG(QDateTimeAxis *, axis_x));
  18. axis_x->setFormat("hh:mm");
  19. axis_x->setTitleText("Date");
  20. axis_x->setTickCount(m_vector.size());
  21.  
  22. QValueAxis *axis_y = new QValueAxis();
  23. QMetaObject::invokeMethod(chartview, "axisY", Qt::DirectConnection, Q_RETURN_ARG(QValueAxis *, axis_y));
  24. axis_y->setMin(0);
  25. axis_y->setMax(100);
  26. axis_y->setTitleText("Rainfall [mm]");
  27.  
  28. QAbstractSeries *serie = nullptr;
  29. QMetaObject::invokeMethod(chartview, "createSeries", Qt::DirectConnection,
  30. Q_RETURN_ARG(QAbstractSeries *, serie),
  31. Q_ARG(int, type),
  32. Q_ARG(QString, "serie from c++"),
  33. Q_ARG(QAbstractAxis *, axis_x),
  34. Q_ARG(QAbstractAxis *, axis_y));
  35.  
  36. if (auto *line_serie = qobject_cast<QLineSeries *>(serie))
  37. {
  38. for (const auto &item : m_vector)
  39. {
  40. line_serie->append(item->dataTime.time().hour(), item->temp);
  41. }
  42. }

Проблема в том что QLineSeries должна состоять из времени по оси Х и значения int по оси Y.
Данные хранятся в векторе в таком вот виде

  1. struct TemperatureHistory
  2. {
  3. int index;
  4. QDateTime dataTime;
  5. int temp;
  6. };

На оси Х я хотел отображать hh:mm. Может кто подсказать как правильно такие данные заполнять?

На данный момент получается только вот такое

1

Do you like it? Share on social networks!

0

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • AK
    April 1, 2025, 11:41 a.m.
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    March 9, 2025, 4:14 p.m.
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
  • ИМ
    Nov. 22, 2024, 9:51 p.m.
    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
  • Evgenii Legotckoi
    Oct. 31, 2024, 11:37 p.m.
    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup