Qt控件库:QCustomPlot

曲线添加

#include <QCustomPlot.h>
QCustomPlot* plot = new QCustomPlot(this);
// 创建曲线对象,创建时就已经添加
QCPGraph* graph = plot->addGraph();
// 设置曲线的 x 和 y 数据
QVector<double> x = {1, 2, 3, 4, 5};
QVector<double> y = {1, 4, 9, 16, 25};
graph->setData(x, y);

背景

    // 设置背景颜色
    QLinearGradient plotGradient;
    plotGradient.setStart(0, 0);
    plotGradient.setFinalStop(0, 350);
    plotGradient.setColorAt(0, QColor(255, 255, 255));
    plotGradient.setColorAt(1, QColor(245, 245, 245));
    ui->plot ->setBackground(plotGradient);
    // 设置QCPAxisRect背景颜色,即坐标轴内空间颜色
    QLinearGradient axisRectGradient;
    axisRectGradient.setStart(0, 0);
    axisRectGradient.setFinalStop(0, 350);
    axisRectGradient.setColorAt(0, QColor(255, 255, 255));
    axisRectGradient.setColorAt(1, QColor(255, 255, 255));
    ui->plot ->axisRect()->setBackground(axisRectGradient);
    // 设置图例背景颜色
    ui->plot ->legend->setBrush(plotGradient);

网格

    ui->my_custom_plot->xAxis->grid()->setSubGridVisible(false);  // 不显示子网格线
    ui->my_custom_plot->yAxis->grid()->setSubGridVisible(false);
    
 	ui->my_custom_plot->xAxis->grid()->setPen(QPen(QColor(140, 140, 140), 1, Qt::DotLine));  // 网格线(对应刻度)画笔
    ui->my_custom_plot->yAxis->grid()->setPen(QPen(QColor(140, 140, 140), 1, Qt::DotLine));
    
	ui->my_custom_plot->xAxis->grid()->setZeroLinePen(QColor(140, 140, 140));  // 设置刻度为0时的网格线的画笔
    ui->my_custom_plot->yAxis->grid()->setZeroLinePen(QColor(140, 140, 140));

坐标轴

    ui->my_custom_plot->xAxis->setBasePen(QPen(Qt::black, 1));     // 轴线的画笔
    ui->my_custom_plot->xAxis->setTickPen(QPen(Qt::black, 1));     // 轴刻度线的画笔
    ui->my_custom_plot->xAxis->setSubTickPen(QPen(Qt::black, 1));  // 轴子刻度线的画笔
    ui->my_custom_plot->xAxis->setTickLabelColor(Qt::black);       // 轴刻度文字颜色
    ui->my_custom_plot->xAxis->setLabelColor(Qt::black);           // 轴标签颜色
    ui->my_custom_plot->yAxis->setBasePen(QPen(Qt::black, 1));     // 轴线的画笔
    ui->my_custom_plot->yAxis->setTickPen(QPen(Qt::black, 1));     // 轴刻度线的画笔
    ui->my_custom_plot->yAxis->setSubTickPen(QPen(Qt::black, 1));  // 轴子刻度线的画笔
    ui->my_custom_plot->yAxis->setTickLabelColor(Qt::black);       // 轴刻度文字颜色
    ui->my_custom_plot->yAxis->setLabelColor(Qt::black);           // 轴标签颜色

    ui->my_custom_plot->xAxis2->setBasePen(QPen(Qt::black, 1, Qt::DotLine));  // 轴线的画笔
    ui->my_custom_plot->xAxis2->setTickPen(QPen(Qt::black, 1));               // 轴刻度线的画笔
    ui->my_custom_plot->xAxis2->setSubTickPen(QPen(Qt::black, 1));            // 轴子刻度线的画笔
    ui->my_custom_plot->xAxis2->setTickLabelColor(Qt::black);                 // 轴刻度文字颜色
    ui->my_custom_plot->xAxis2->setLabelColor(Qt::black);                     // 轴标签颜色
    ui->my_custom_plot->yAxis2->setBasePen(QPen(Qt::black, 1, Qt::DotLine));  // 轴线的画笔
    ui->my_custom_plot->yAxis2->setTickPen(QPen(Qt::black, 1));               // 轴刻度线的画笔
    ui->my_custom_plot->yAxis2->setSubTickPen(QPen(Qt::black, 1));            // 轴子刻度线的画笔
    ui->my_custom_plot->yAxis2->setTickLabelColor(Qt::black);                 // 轴刻度文字颜色
    ui->my_custom_plot->yAxis2->setLabelColor(Qt::black);                     // 轴标签颜色

    ui->my_custom_plot->xAxis->setUpperEnding(
        QCPLineEnding::esSpikeArrow);  // 设置轴线结束时的风格为 实角三角形但内部有凹陷的形状
    ui->my_custom_plot->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
设置时间轴
    QSharedPointer<QCPAxisTickerDateTime> date_time_ticker(new QCPAxisTickerDateTime);
    date_time_ticker->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
    date_time_ticker->setDateTimeFormat("hh:mm:ss\nyyyy-MM-dd");  // 设置日期格式
    ui->my_custom_plot->xAxis->setTicker(date_time_ticker);       // 设置x轴的刻度标签显示时间
    ui->my_custom_plot->xAxis->ticker()->setTickCount(5);         // 设置 x 轴上要显示的刻度数

	//设置数据
	QVector<double> m_timestamp{12345678};//这个是纪元1970年开始算的时间,单位是秒,这里仅仅是示例
	QVector<double> value{1};
	QCPGraph* graph = plot->addGraph();
	graph->setData(m_timestamp, value);//更新数据
	graph->addData(m_timestamp, value);//尾部添加数据

曲线样式

	xAxis->setBasePen(QPen(QColor(0, 163, 222)));                        		//x轴线
    xAxis->setLabelColor(Qt::black);                                            //设置字体
    xAxis->grid()->setPen(QPen(QColor("#159C77"), 1, Qt::DotLine));            	//x中间的水平线
    xAxis->setTickLabelColor(Qt::black);                                        //x标号
    xAxis->setTickPen(QPen(QColor("#159C77")));                            		//x大分割
    xAxis->setLabel(QStringLiteral("时间"));									//文字
    xAxis->setSubTickPen(QPen(QColor("#159C77")));                        		//x小分割
    xAxis->setSubTickLength(0);
    xAxis->setSubTicks(false);													//x小分割不显示
    xAxis->setTickLabelFont(QFont("", 10));
    xAxis->setRange(QCPRange(0, 50));                                           //x轴范围
    xAxis->ticker()->setTickCount(50);											//x轴有多少个点
    xAxis->ticker()->setTickStepStrategy(QCPAxisTicker::tssReadability);
    xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
    xAxis->rescale(true);														//设置自动缩放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值