【Qt】QChart绘制静态图形(以sin和cos为例)

Qtcharts是高版本Qt自带的一个绘制图形的组件,
如何使用它绘制简单的折线图呢?
本文以sin和cos为例,记录了绘制的过程。

环境准备

安装Qt5.7及以上安装的同时勾选Qtcharts组件
需要注意在configure时不要跳过charts。

使用步骤

1.修改.pro

在.pro文件中添加

QT += charts

2.ui设计步骤

绘制ui时,放置一个“Widget”类型的控件,
将objectName设置为"ChartView",
然后在它上面单击鼠标右键,选择“提升为…”。
先添加QChartView类在这里插入图片描述
在这里插入图片描述
后续如果还有需要提升的,可以之间右键‘提升为’->选择QchartView
在这里插入图片描述

3.修改ui头文件

在ui头文件里面添加如下代码

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

如下图
在这里插入图片描述

4.编写代码

创建一个qtchart的对象

QChart* chart = new QChart();

创建俩个QLineSeries对象,使用append添加数据点,setName设置折线标题。
以sin和cos图像为例。

    // 创建折线系列对象
    QLineSeries *series = new QLineSeries();
    QLineSeries *series2 = new QLineSeries();
    // 使用append添加数据点
    for (quint32 i = 0; i < 100; i++) {
    
    
        series->append(i, sin(0.1f*i));
        series2->append(i, cos(0.1f*i)); 
    }
    // 设置折线的标题
    series->setName("sin");
    series2->setName("cos");

折线系列添加到图表,并创建默认的坐标轴,
添加图标到显示对象上。

    // 折线系列添加到图表
    chart->addSeries(series);
    chart->addSeries(series2);
    // 基于已添加到图表的 series 来创建默认的坐标轴
    chart->createDefaultAxes();  
    // chart图表添加到ChartView的对象      
    ui->ChartView->setChart(chart);

显示效果

在这里插入图片描述

完整代码

mainwindow

扫描二维码关注公众号,回复: 13746669 查看本文章
#include "mainwindow.h"
#include "math.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
    QChart* chart = new QChart();
    // 创建折线系列对象
    QLineSeries *series = new QLineSeries();
    QLineSeries *series2 = new QLineSeries();
    // 使用append添加数据点
    for (quint32 i = 0; i < 100; i++) {
    
    
        series->append(i, sin(0.1f*i));
        series2->append(i, cos(0.1f*i)); //series->append(i, cos(0.6f*i));
    }
    // 设置折线的标题
    series->setName("sin");
    series2->setName("cos");
    // 折线系列添加到图表
    chart->addSeries(series);
    chart->addSeries(series2);
    // 基于已添加到图表的 series 来创建默认的坐标轴
    chart->createDefaultAxes();
    ui->ChartView->setChart(chart);
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}

猜你喜欢

转载自blog.csdn.net/qq_44078824/article/details/121800688
今日推荐