1 #include “”
2 #include
3 MainWindow::MainWindow(QWidget parent)
4 : QMainWindow(parent)
5{
6 / 设置最显示位置与大小 /
7 this->setGeometry(0, 0, 800, 480);
8 / 最大储存 maxSize - 1 个数据 /
9 maxSize = 51;
10 / x 轴上的最大值 /
11 maxX = 5000;
12 / y 轴最大值 /
13 maxY = 40;
14
15 / splineSeries 曲线实例化(折线用 QLineSeries) /
16 splineSeries = new QSplineSeries();
17 / 图表实例化 /
18 chart = new QChart();
19 / 图表视图实例化 /
20 chartView = new QChartView();
21
22 / 坐标轴 /
23 axisY = new QValueAxis();
24 axisX = new QValueAxis();
25 / 定时器 /
26 timer = new QTimer(this);
27
28 / legend 译图例类型,以绘图的颜色区分,本例设置为隐藏 /
29 chart->legend()->hide();
30 / chart 设置标题 /
31 chart->setTitle(“实时动态曲线示例”);
32 / 添加一条曲线 splineSeries /
33 chart->addSeries(splineSeries);
34
35 / 设置显示格式 /
36 axisY->setLabelFormat(“%i”);
37 / y 轴标题 /
38 axisY->setTitleText(“温度/℃”);
39 / y 轴标题位置(设置坐标轴的方向) /
40 chart->addAxis(axisY, Qt::AlignLeft);
41 / 设置 y 轴范围 /
42 axisY->setRange(0, maxY);
43 / 将 splineSeries 附加于 y 轴上 /
44 splineSeries->attachAxis(axisY);
45
46 / 设置显示格式 /
47 axisX->setLabelFormat(“%i”);
48 / x 轴标题 /
49 axisX->setTitleText(“时间/ms”);
50 / x 轴标题位置(设置坐标轴的方向) /
51 chart->addAxis(axisX, Qt::AlignBottom);
52 / 设置 x 轴范围 /
53 axisX->setRange(0, maxX);
54 / 将 splineSeries 附加于 x 轴上 /
55 splineSeries->attachAxis(axisX);
56
57 / 将图表的内容设置在图表视图上 /
58 chartView->setChart(chart);
59 / 设置抗锯齿 /
60 chartView->setRenderHint(QPainter::Antialiasing);
61
62 / 设置为图表视图为中心部件 /
63 setCentralWidget(chartView);
64
65 / 定时 200ms /
66 timer->start(200);
67 / 信号槽连接 /
68 connect(timer, SIGNAL(timeout()), this, SLOT(timerTimeOut()));
69
70 / 设置随机种子,随机数初始化 /
71 qsrand(time(NULL));
72 }
73
74 MainWindow::~MainWindow()
75 {
76 }
77
78 void MainWindow::timerTimeOut()
79 {
80 / 产生随机 0~maxY 之间的数据 /
81 receivedData(qrand() % maxY );
82 }
83
84 void MainWindow::receivedData(int value)
85 {
86 / 将数据添加到 data 中 /
87 (value);
88
89 / 当储存数据的个数大于最大值时,把第一个数据删除 /
90 while (() > maxSize) {
91 / 移除 data 中第一个数据 /
92 ();
93 }
94
95 / 先清空 /
96 splineSeries->clear();
97
98 / 计算 x 轴上的点与点之间显示的间距 /
99 int xSpace = maxX / (maxSize - 1);
100
101 / 添加点,xSpace * i 表示第 i 个点的 x 轴的位置 */
102 for (int i = 0; i < (); ++i) {
103 splineSeries->append(xSpace * i, (i));
104 }
105 }