Qt Charts 之 QBarSeries Class

详细描述

QBarSeries类提供一系列按类别分组的垂直条形图(柱状图)。

这个类将数据绘制为按类别分组的垂直条形图,每个分组的每一个条形都添加到这个系列(QBarSeries)中。

bar chart example 演示了怎么创建一个分组条形图:


相关代码:
      QBarSet *set0 = new QBarSet("Jane");
      QBarSet *set1 = new QBarSet("John");
      QBarSet *set2 = new QBarSet("Axel");
      QBarSet *set3 = new QBarSet("Mary");
      QBarSet *set4 = new QBarSet("Samantha");

      *set0 << 1 << 2 << 3 << 4 << 5 << 6;
      *set1 << 5 << 0 << 0 << 4 << 0 << 7;
      *set2 << 3 << 5 << 8 << 13 << 8 << 5;
      *set3 << 5 << 6 << 7 << 3 << 4 << 5;
      *set4 << 9 << 7 << 5 << 3 << 1 << 2;
创建五个条集合(QBarSet)实例代表“Jane”等五个人并给每个条集合填充6个数据,这里中间的缺失值以0表示,缺失值在条形图中不会显示。

      QBarSeries *series = new QBarSeries();
      series->append(set0);
      series->append(set1);
      series->append(set2);
      series->append(set3);
      series->append(set4);
将每个条集合(QBarSet)实例添加到条系列(QBarSeries)中,从图中我们可以看出条形图显示是按类别是显示的,有多少个类别就有多少个分组,这里的类别是月份,因为有一月到六月,所以就有六个分组。

常用API

QBarSeries::QBarSeries(QObject *parent = Q_NULLPTR)
构造一个空的父对象为parent的条系列。

QBarSeries::~QBarSeries()
从图标中移除条系列。

[virtual] QAbstractSeries::SeriesType QBarSeries::type() const
返回条系列的类型( QAbstractSeries::SeriesTypeBar,QAbstractSeries::SeriesTypeStackedBar,QAbstractSeries::SeriesTypePercentBar,QAbstractSeries::SeriesTypeHorizontalBar,QAbstractSeries::SeriesTypeHorizontalStackedBar,QAbstractSeries::SeriesTypeHorizontalPercentBar等)。


继承的成员函数:
bool QAbstractBarSeries::append(QBarSet *set)
增加指定条集合set到条系列中并获得条集合的所有权。如果条集合是空的或者已经属于该系列,将不会被添加到条系列中。添加成功返回true。

bool QAbstractBarSeries::append(QList<QBarSet *> sets)
添加指定条集合链表sets到条系列中并获得条集合的所有权。如果添加成功返回true。如果任意一个sets是空的或者已经在之前添加到条系列中,什么也不会被添加到条系列中并返回false。如果任意一个条集合在链表中出现超过一次,什么也不会被添加到条系列中并且函数返回false。





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Qt如何画直方图的问题,以下是一个简单的示例: 首先,需要在Qt的工程中包含Qt Charts模块,然后在需要绘制直方图的窗口中添加一个QChartView对象,用于显示直方图。在构造函数中,创建一个QChart对象,用于设置直方图的样式和数据。然后,使用QBarSet和QBarSeries类来设置每个直方图柱子的值,用QBarCategoryAxis类来设置直方图的横坐标,用QValueAxis类来设置直方图的纵坐标。最后,将QBarSeries对象添加到QChart对象中,并将QChart对象设置给QChartView对象。 下面是详细的代码: ```cpp #include <QtCharts/QChartView> #include <QtCharts/QBarSet> #include <QtCharts/QBarSeries> #include <QtCharts/QValueAxis> #include <QtCharts/QBarCategoryAxis> #include <QtCore/QRandomGenerator> #include <QtWidgets/QVBoxLayout> #include <QtWidgets/QWidget> QT_CHARTS_USE_NAMESPACE class HistogramWindow : public QWidget { public: explicit HistogramWindow(QWidget* parent = nullptr) : QWidget(parent) { // 创建直方图对象 QChart* chart = new QChart(); chart->setTitle("Histogram"); // 创建柱子数据,生成10个0-99的随机数 QBarSet* data = new QBarSet("Random Numbers"); for (int i = 0; i < 10; ++i) { *data << QRandomGenerator::global()->bounded(100); } // 将柱子数据添加到直方图系列中 QBarSeries* series = new QBarSeries(); series->append(data); // 设置直方图系列的样式 QPen pen; pen.setWidth(1); series->setPen(pen); QBrush brush; brush.setColor(Qt::blue); brush.setStyle(Qt::SolidPattern); series->setBrush(brush); // 设置直方图横坐标 QBarCategoryAxis* axisX = new QBarCategoryAxis(); QStringList categories; categories << "1" << "2" << "3" << "4" << "5" << "6" << "7" << "8" << "9" << "10"; axisX->append(categories); chart->addAxis(axisX, Qt::AlignBottom); series->attachAxis(axisX); // 设置直方图纵坐标 QValueAxis* axisY = new QValueAxis(); chart->addAxis(axisY, Qt::AlignLeft); series->attachAxis(axisY); // 将直方图系列添加到直方图中 chart->addSeries(series); // 设置QChartView显示的直方图 QChartView* chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); // 使用QVBoxLayout将QChartView放入窗口中 QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(chartView); setLayout(layout); } }; ``` 在窗口中添加一个HistogramWindow对象,即可显示这个简单的直方图示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值