QCustomPlot 毫秒精度的时间轴
时间: 2024-01-12 21:46:32 浏览: 233
在 QCustomPlot 中,可以使用 QDateTimeAxis 来创建毫秒精度的时间轴。以下是一个简单的示例:
```cpp
// 创建时间轴
QDateTimeAxis *timeAxis = new QDateTimeAxis;
// 设置时间格式
timeAxis->setDateTimeFormat("hh:mm:ss.zzz");
// 设置范围
timeAxis->setRange(QDateTime::currentDateTime(), QDateTime::currentDateTime().addSecs(60));
// 将时间轴添加到图形界面中
customPlot->addAxis(timeAxis, Qt::AlignBottom);
// 将数据添加到图形界面中
QVector<double> xData, yData;
// 添加数据点
QDateTime currentTime = QDateTime::currentDateTime();
for(int i=0; i<60; i++) {
xData.append(currentTime.toMSecsSinceEpoch());
yData.append(qrand() % 100);
currentTime = currentTime.addSecs(1);
}
// 创建曲线
QCPGraph *graph = customPlot->addGraph();
// 设置数据
graph->setData(xData, yData);
// 设置时间轴作为 x 轴
graph->setAdaptiveSampling(true);
graph->rescaleAxes();
graph->setLineStyle(QCPGraph::lsLine);
graph->setPen(QPen(QColor(255, 0, 0), 2));
graph->setName("Data");
customPlot->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, 5));
customPlot->graph()->setLineStyle(QCPGraph::lsNone);
customPlot->graph()->setName("Data");
// 将曲线与时间轴关联
graph->rescaleAxes(true);
customPlot->xAxis->setRange(graph->data()->firstKey(), graph->data()->lastKey());
graph->setClipToAxisRect(true);
graph->setSelectable(QCP::stNone);
graph->setInteraction(QCP::iRangeDrag, true);
graph->setInteraction(QCP::iRangeZoom, true);
graph->setInteraction(QCP::iMultiSelect, false);
graph->setInteraction(QCP::iSelectPlottables, false);
```
在上面的示例代码中,我们首先创建了一个 QDateTimeAxis 对象,然后设置了时间格式和范围,并将其添加到 QCustomPlot 对象的底部。接下来,我们创建了一些数据点,并创建了一个 QCPGraph 对象,将其数据设置为 xData 和 yData,将其与时间轴关联,并将其添加到 QCustomPlot 对象中。
最后,我们设置了一些交互选项,例如拖拽和缩放,以便用户可以轻松地操纵图形。
阅读全文