/* Создаем график */QChart *chart = new QChart;/* Создаем область для вывода */QChartView *view = new QChartView(chart);m_layout->addWidget(view, i, 0);/* Создаем линию */QLineSeries *line = new QLineSeries();/* Создаем ось X */QDateTimeAxis *axisX = new QDateTimeAxis;axisX->setTickCount(10);axisX->setFormat("yyyy-MM-dd<br>hh:mm:ss");axisX->setReverse(true);/* Устанавливаем диапазон оси */axisX->setMax(startTime);axisX->setMin(startTime.addSecs(-interval));chart->setAxisX(axisX);/* Создаем ось Y */QValueAxis *axisY = new QValueAxis();axisY->setLabelFormat("%i");axisY->setRange(0.0, 0.0);chart->setAxisY(axisY);.../* Привязываем линии к графикам и добавляем им оси */for (qint32 sCounter = 0; sCounter < m_sensors->count(); sCounter++){ chart->addSeries(line); chart->attachAxis(axisY);}
line->append(i, v);/* При необходимости расширяем диапазон оси Y */if (v < axisY->min()){ axisY->setMin(v);}else{ if (v > axisY->max()) { axisY-> setMax(v); }}
/* Вставляем заданное значение */line->insert(0, QPointF(line->at(0).x() - 1, v));line->remove(line->count() - 1);axisX->setMax(axisX->max().addSecs(1));axisX->setMin(axisX->min().addSecs(1));/* Сдвигаем область отрисовки на один отсчет */chart->scroll(-static_cast<double>(chart->plotArea().width()) / static_cast<double>(line->count()), 0.0);
line->insert(0, QPointF(line->at(0).x() - 1, v));line->remove(line->count() - 1);
C++ (Qt)QMutex m_mutex;QQueue< Point > m_points;