Qt5中自动导入文件生成ScatterChart(散列图)

最近学习了QT中的Qchart的用法,想自动生成散列图ScatterChart,同时自动读取.txt、.dat文件来获得数据坐标,以下是生成的一个小的demo文件。

首先在.pro 中添加:

QT += charts

.h文件如下:

#ifndef CHARTVIEW_H
#define CHARTVIEW_H

#include <QtCharts/QChartView>

QT_CHARTS_USE_NAMESPACE

class ChartView : public QChartView
{
    Q_OBJECT
public:
    explicit ChartView(QWidget *parent = 0);
};

#endif // CHARTVIEW_H

main.cpp文件:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include "chartview.h"

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//![4]
    ChartView *chartView = new ChartView();
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(400,300);
    window.show();
//![4]

    return a.exec();
}

chartview.cpp文件:

程序中做了详细的注释说明,以下就不做赘述了。

#include "chartview.h"
#include <QtCharts/QScatterSeries>
#include <QtCharts/QLegendMarker>
#include <QtCore/QtMath>
#include "QDebug"

#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;

ChartView::ChartView(QWidget *parent) :
    QChartView(new QChart(), parent)
{
    //![1]
    //
    QScatterSeries *series0 = new QScatterSeries();
    series0->setName("scatter1");
    //设置标记的形状,默认是圆形,并且默认标记的大小是15号
    series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);
    series0->setMarkerSize(10.0);
    //![1]

    //![2]
    //为坐标轴添加坐标值
    int a[26];
    ifstream infile("C:/f1.txt",ios::in);
    if(!infile)
    {
        qDebug()<<"open error!";
        exit(1);
    }
    for(int i=0;i<26;i++)
        {
            infile>>a[i];
        }
        for(int i=0;i<26;i+=2)
        {
             series0->append(a[i], a[i+1]);
        }
     infile.close();
    //![2]

    //![3]
    //增加散列放进图表中
    setRenderHint(QPainter::Antialiasing);
    chart()->addSeries(series0);

    chart()->setTitle("Simple scatterchart example");
    chart()->createDefaultAxes();
    chart()->setDropShadowEnabled(false);
    //![3]

    //![4]
    //使用散乱点作为图例标记
    chart()->legend()->setMarkerShape(QLegend::MarkerShapeFromSeries);
    //![4]
}

我这里使用的是.txt文本文件,其中的内容如下:

通过append()函数添加坐标值,进行绘制散列表。

结果图如下:

代码下载链接:

https://download.csdn.net/download/jamin_liu_90/10686168

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值