#ifndef DCHART_H
#define DCHART_H
#include <QWidget>
#include <QChart> //图标
#include <QChartView> //图标视图
QT_CHARTS_USE_NAMESPACE //using namespace QT_CHARTS_NAMESPACE
QT_BEGIN_NAMESPACE
namespace Ui
{
class DChart;
}
QT_END_NAMESPACE
class DChart : public QWidget
{
Q_OBJECT
public:
DChart(QWidget *parent = nullptr);
~DChart();
private:
Ui::DChart *ui;
};
#endif // DCHART_H
#include "Dchart.h"
#include "ui_Dchart.h"
#include <QValueAxis> //坐标轴
#include <QSplineSeries> //曲线
#include <QLineSeries> //折线
#include <QPen>
DChart::DChart(QWidget *parent)
: QWidget(parent)
, ui(new Ui::DChart)
{
ui->setupUi(this);
//创建图表视图
//QChartView* char_view = new QChartView(this);
//创建一个图表(图表放到视图里)
QChart *chart = new QChart();
//创建坐标轴
QValueAxis *valueAxis_x = new QValueAxis(); //x轴
QValueAxis *valueAxis_y = new QValueAxis(); //y轴
//设置坐标轴的范围
valueAxis_x->setRange(0,5000);
valueAxis_y->setRange(0,100);
//设置坐标轴的标题和显示的格式
valueAxis_x->setTitleText("时间/ms");
valueAxis_y->setTitleText("温度/°C");
valueAxis_x->setLabelFormat("%d"); //显示格式,%f,小数
valueAxis_y->setLabelFormat("%d");
//设置范围份数
valueAxis_x->setTickCount(10);
valueAxis_y->setTickCount(10);
//图表添加坐标轴
chart->createDefaultAxes(); //清除原有的坐标轴,创建新的坐标轴
chart->addAxis(valueAxis_x,Qt::AlignBottom);
chart->addAxis(valueAxis_y,Qt::AlignLeft);
//设置图标的标题和图例
chart->setTitle("温度与时间曲线");
//chart->legend()->setVisible(false);//图例不可见
//创建曲线对象,添加曲线的点,设置曲线的颜色
QSplineSeries *splineseries = new QSplineSeries();
splineseries->append(0,50);
splineseries->append(1000,60);
splineseries->append(2000,80);
splineseries->append(3000,50);
splineseries->append(4000,30);
splineseries->append(5000,80);
QPen pen(QColor(0xff5566));
splineseries->setPen(pen);
//图标添加曲线
chart->addSeries(splineseries);
//将线的数据与坐标轴联系起来,附属到坐标轴上
splineseries->attachAxis(valueAxis_x);
splineseries->attachAxis(valueAxis_y);
//把图表放到图表视图里
ui->chart_view->setChart(chart);
}
DChart::~DChart()
{
delete ui;
}