基于QChartView实现绘制曲线

本文介绍如何利用Qt库中的QChartView组件来绘制曲线。通过示例代码,详细讲解了绘制过程,适用于Qt开发人员进行图形界面设计和数据可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码奉上

#include <QValueAxis>
#include <QDateTimeAxis>
#include <QSplineSeries>
#include <QDateTimeAxis>
#include "flydatatablemodel.h"
QT_BEGIN_NAMESPACE
namespace Ui {
 
 
class MainWindow;
}
QT_END_NAMESPACE
struct FlyDataModele
{
 
 
    QDateTime Time;
    double AccVol;
    double FilaCur;
    double FilaR;
    double GridVol;
};
class MainWindow : public QMainWindow
{
 
 
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public:
    QDateTime GetTimeFrom1904010108(double timestamp);
    void setExcel();
    void Apple();
    void lineChart();
   // void initChart();
 
private slots:
    void on_pushButton_clicked();
 
private:
    Ui::MainWindow *ui;
    FlyDataTableModel *model;
    QVector<QPointF> vectors;
    QVector<QPointF> vector2;
    QDateTime curDateTIme = QDateTime::currentDateTime();
 
};
#endif // MAINWINDOW_H
cpp
#include "mainwindow.h"
#include <QSplineSeries>
QT_CHARTS_USE_NAMESPACE    // 引入命名空间,必须放在ui_widget.h前
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
#include <QGridLayout>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
 
 
    ui->setupUi(this);
    setExcel();
    Apple();
 
}
 
MainWindow::~MainWindow()
{
 
 
    delete ui;
}
QDateTime MainWindow::GetTimeFrom1904010108(double timestamp)
{
 
 
    qint64 years = (1970-1904);
    qint64 leapYears = years / 4;
    qint64 difVal = (years-leapYears)*365*24*60*60 + leapYears * 366*24*60*60 - 8*60*60;
 
    double realTimestamp = timestamp - difVal;
    return QDateTime::fromSecsSinceEpoch(realTimestamp, Qt::UTC);
}
void MainWindow::setExcel()
{
 
 
    QStringList textList;
    int rowCount = 0;        //统计文件的行数
    int cloumCount = 4;     //列数已知
 
    QFile file("C:/Users/huang'ji'yuan/Desktop/ActiveWorkBook.csv");
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
 
 
        qDebug()<<"Can't open the file!"<<endl;
    }
    model = new FlyDataTableModel(this);
    while(!file.atEnd())
    {
 
 
        QByteArray line = file.readLine();
        rowCount++;
        QString str(line);
        auto list = str.split(",");
        FlyDataModel item;
        item.Time = GetTimeFrom1904010108(list[0].toDouble());
        item.AccVol = list[1].toDouble();
        item.FilaCur = list[2].toDouble();
        item.FilaR = list[3].toDouble();
        item.GridVol = list[4].toDouble();
        model->append(item);
        textList.append(line);
        qDebug()<< str;
    }
    qDebug()<< rowCount;
    qDebug()<< textList;
 
    ui->tableView->setModel(model);
 
 
 
 
 
    /*
    for(int i = 0; i < rowCount; i++)
    {
 
 
        QStringList Item1 ;
        QStringList Text1;
        Item1= textList.at(i).split(",");
        Text1<< Item1.at(0) <<Item1.at(1) <<Item1.at(2)<<Item1.at(3);
        switch(i)
        {
 
 
        case 0:
            ui->tableWidget->setHorizontalHeaderLabels(Text1);
 
            break;
        case 1:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(0, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 2:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(1, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 3:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(2, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 4:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(3, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 5:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(4, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 6:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(5, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 7:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(6, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 8:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(7, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 9:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(8, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 10:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(9, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 11:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(10, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 12:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(11, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 13:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(12, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 14:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(13, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 15:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(14, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 16:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(15, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 17:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(16, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 18:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(17, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 19:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(18, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 20:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(19, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 21:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(20, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 22:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(21, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 23:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(22, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 24:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(23, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 25:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(24, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 26:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(25, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 27:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(26, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 28:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(27, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 29:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(28, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 30:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(29, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 31:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(30, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 32:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(31, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 33:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(32, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 34:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(33, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 35:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(34, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 36:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(35, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 37:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(36, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 38:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(37, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 39:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(38, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 40:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(39, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 41:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(40, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 42:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(41, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 43:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(42, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 44:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(43, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 45:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(44, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 46:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(45, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 47:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(46, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 48:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(47, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 49:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(48, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 50:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(49, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 51:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(50, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 52:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(51, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 53:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(52, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 54:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(53, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 55:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(54, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 56:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(55, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 57:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(56, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 58:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(57, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 59:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(58, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 60:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(59, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 61:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(60, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 62:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(61, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 63:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(62, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 64:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(63, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 65:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(64, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 66:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(65, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 67:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(66, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 68:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(67, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 69:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(68, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 70:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(69, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 71:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(70, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 72:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(71, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 73:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(72, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 74:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(73, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 75:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(74, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 76:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(75, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 77:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(76, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 78:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(77, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 79:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(78, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 80:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(79, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 81:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(80, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 82:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(81, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 83:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(82, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 84:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(83, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 85:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(84, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 86:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(85, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 87:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(86, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 88:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(87, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 89:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(88, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 90:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(89, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 91:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(90, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 92:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(91, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 93:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(92, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 94:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(93, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 95:
            for(int num = 0; num < 4; num++)
            {
 
 
                ui->tableWidget->setItem(94, num, new QTableWidgetItem(Text1.at(num)));
            }
            break;
        case 96:
            for(int num = 0; num < 4; num++)</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花骨朵a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值