QChart模块是Qt Charts库的基础,提供了用于创建和显示各种类型图表的类和接口。Qt Charts库是一个功能丰富、易于使用的数据可视化工具库,可以帮助开发者在应用程序中添加漂亮而又交互性强的图表。
QChart模块主要包括以下类:
通过使用QChart模块,开发者可以轻松地创建并自定义各种类型的图表,例如折线曲线图、散点图、条形图、饼图等,并以交互性强的方式来展示数据,为应用程序增加了更多的可视化效果。
下面是通过折线图显示3个设备的温度变化趋势效果:
以下是使用QChart显示3个折线图,表示3个设备的温度曲线的实现代码: (温度数据是模拟的数据)
#include
#include
#include
#include
#include
#include
#include
QT_CHARTS_USE_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
// 数据初始化
for (int i = 0; i < 30; i++) {
m_data[0].append(QPointF(i, QRandomGenerator::global()->bounded(10, 30)));
m_data[1].append(QPointF(i, QRandomGenerator::global()->bounded(20, 40)));
m_data[2].append(QPointF(i, QRandomGenerator::global()->bounded(30, 50)));
}
// 创建线性图对象
QChart* chart = new QChart();
chart->setTitle("Temperature Data");
chart->setAnimationOptions(QChart::SeriesAnimations);
// 创建线序列对象
QLineSeries* series1 = new QLineSeries(chart);
QLineSeries* series2 = new QLineSeries(chart);
QLineSeries* series3 = new QLineSeries(chart);
// 设置线颜色、名字和宽度
series1->setColor(Qt::red);
series1->setName("Device1");
series1->setPen(QPen(Qt::red, 2));
series2->setColor(Qt::green);
series2->setName("Device2");
series2->setPen(QPen(Qt::green, 2));
series3->setColor(Qt::blue);
series3->setName("Device3");
series3->setPen(QPen(Qt::blue, 2));
// 添加数据到线序列对象
for (const QPointF& point : m_data[0]) {
*series1 << point;
}
for (const QPointF& point : m_data[1]) {
*series2 << point;
}
for (const QPointF& point : m_data[2]) {
*series3 << point;
}
// 添加线序列对象到图表
chart->addSeries(series1);
chart->addSeries(series2);
chart->addSeries(series3);
// 设置横轴和纵轴标签
QValueAxis* axisX = new QValueAxis();
axisX->setTitleText("Time (s)");
axisX->setRange(0, 29);
QValueAxis* axisY = new QValueAxis();
axisY->setTitleText("Temperature (℃)");
axisY->setRange(0, 60);
// 添加横轴和纵轴到图表
chart->setAxisX(axisX);
chart->setAxisY(axisY);
// 创建图表视图
QChartView* chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
setCentralWidget(chartView);
}
private:
// 存储温度数据的二维数组
QVector
以上是一个完整的Qt窗口程序,可以直接运行并显示3个设备的温度曲线。
在程序中,使用QChart对象作为图表容器,创建了3个QLineSeries对象用于展示3个设备的温度数据,并将它们添加到QChart对象中。自定义了横轴和纵轴标签及范围,并将它们添加到QChart对象中。最后,创建了一个QChartView对象,并将QChart对象设置为其子对象,以展示整个温度曲线图表。
如果自己需要设计UI界面,添加QChart显示折线图。下面演示一下过程。
#ifndef WIDGET_H
#define WIDGET_H
#include
// 包含line chart需要的头文件
#include
#include
#include
#include
#include
#include
// 引用命名空间
QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QChart *chart;
QChartView *chartView;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 存储温度数据的二维数组
QVector
全部0条评论
快来发表一下你的评论吧 !