在没有QCharst模块时,可以使用QPainter自定义绘制曲线折线图

下面提供完整代码供参考:
直接在qt创建一个QMainWindow类的app的工程,不自动生成ui文件,然后把下面代码复制到mainwindow.cpp编译运行即可。
mainwindow.cpp:
#include "mainwindow.h"
#include <QPainter>
#include <QLabel>
#include <QImage>
#include <QPixmap>
//使用QPainter将数据到曲线画在图片中
QImage imageCurve(const QVector<int> &data1, const QVector<int> &data2);
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(800,600);
int n=10;//n为数据个数
QVector<int> data1;
QVector<int> data2;
for(int i=0;i<n;i++)//随机产生两个数据集
data1.append(rand()%20+10);
for(int i=0;i<n;i++)
data2.append(rand()%30+10);
QLabel *label = new QLabel(this);
label->setGeometry(50,50,600,500);//将画出来到曲线显示到label上面
label->setPixmap(QPixmap::fromImage(imageCurve(data1,data2)));
label->show();
}
MainWindow::~MainWindow()
{
}
QImage imageCurve(const QVector<int> &data1, const QVector<int> &data2)
{
QString x_title = "x_title";//x坐标名称
QString y_title = "y_title";//y坐标名称
QString title = "xx title charst";//曲线图xx名称
QString overView = "charst: test,csdn: boonion";//图内容说明
QString data1_name = "first";//第一条曲线名称
QString data2_name = "second";
QImage mimage = QImage(600,500,QImage::Format_RGB32); //画布的初始化大小设为600*500,使用32位颜色
QColor backColor = qRgb(255,255,255); //画布初始化背景色使用白色
mimage.fill(backColor);//对画布进行填充
QPainter painter

该代码示例展示了如何在没有QChart模块的情况下,利用QPainter和QImage在Qt环境中手动生成曲线折线图。通过创建QLabel并设置QPixmap显示自定义绘制的图像,实现了数据的图形化展示。代码中包括了坐标轴、刻度、数据点和曲线的绘制方法。
&spm=1001.2101.3001.5002&articleId=128581961&d=1&t=3&u=c38bb34c624645b9b2537edc1d93d0cf)
6551

被折叠的 条评论
为什么被折叠?



