QBoxPlotSeries相关内容

学习一下Qt Charts的柱状图部分。参考书籍:Qt5.9 C++开发指南
效果图
在这里插入图片描述
头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtCharts/QChart>
using namespace QtCharts;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    void createQBoxPlotSeries();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDateTime>
#include <QBoxPlotSeries>
#include <QDateTimeAxis>
#include <QValueAxis>
#include <QBoxSet>
#include <QBarCategoryAxis>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    createQBoxPlotSeries();
}

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

void MainWindow::createQBoxPlotSeries()
{
    //基本设置
    ui->chartViewBoxPlot->setRenderHint(QPainter::Antialiasing);
    ui->chartViewBoxPlot->chart()->setTitle(QStringLiteral("QBoxPlotSeries演示"));
    ui->chartViewBoxPlot->chart()->setTheme(QChart::ChartThemeDark);
    //创建序列和数据集,并向序列添加数据
    qsrand(time(NULL));
    QDateTime now = QDateTime::currentDateTime();
    QBoxPlotSeries *boxPlotSeries = new QBoxPlotSeries;
    boxPlotSeries->setName(QStringLiteral("火柴盒图"));
    for (int i = 0; i < 13; i++)
    {
        QString label = now.addMSecs(1000*60*5*i).toString("hh:mm");
        int value = qrand() % 100;
        qDebug() << value;
        QBoxSet *boxSet = new QBoxSet(label);
        //需要设置这五个值
        boxSet->setValue(QBoxSet::LowerExtreme, value * 0.2);
        boxSet->setValue(QBoxSet::UpperExtreme, value);
        boxSet->setValue(QBoxSet::Median, value * 0.5);
        boxSet->setValue(QBoxSet::LowerQuartile, value * 0.25);
        boxSet->setValue(QBoxSet::UpperQuartile, value * 0.75);
        boxPlotSeries->append(boxSet);
    }
    ui->chartViewBoxPlot->chart()->addSeries(boxPlotSeries);
    ui->chartViewBoxPlot->chart()->createDefaultAxes();
    ui->chartViewBoxPlot->chart()->axes(Qt::Vertical).first()->setRange(0, 100);
    ui->chartViewBoxPlot->chart()->axes(Qt::Vertical).first()->setTitleText(QStringLiteral("值"));
    ui->chartViewBoxPlot->chart()->axes(Qt::Horizontal).first()->setRange(0, 13);
    ui->chartViewBoxPlot->chart()->axes(Qt::Horizontal).first()->setTitleText(QStringLiteral("时间"));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浮生卍流年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值