qt QHorizontalBarSeries详解
1、概述
QHorizontalBarSeries 是 Qt Charts 模块中用于创建水平条形图的类,继承自 QAbstractBarSeries。它可以在图表中显示一组水平条形数据,每个条形代表一个数据点,适用于比较不同类别数据的大小关系。
QHorizontalBarSeries 通常与 QBarSet 配合使用,一个 QBarSet 代表一组相关的数据,而 QHorizontalBarSeries 可以包含多个 QBarSet,形成分组的水平条形图。水平条形图与垂直条形图的区别在于数据的展示方向,水平条形图的类别标签在垂直轴上,数值在水平轴上。
2、重要方法
QHorizontalBarSeries(QObject *parent = nullptr)
:构造函数,创建一个水平条形图系列void append(QBarSet *set)
:向系列中添加一个数据组void remove(QBarSet *set)
:从系列中移除指定的数据组QList<QBarSet *> barSets() const
:返回系列中所有的数据组qreal barWidth() const
:返回条形的宽度void setBarWidth(qreal width)
:设置条形的宽度bool isLabelsVisible() const
:判断是否显示数据标签void setLabelsVisible(bool visible)
:设置是否显示数据标签Qt::Alignment labelsAlignment() const
:返回数据标签的对齐方式void setLabelsAlignment(Qt::Alignment alignment)
:设置数据标签的对齐方式QString labelsFormat() const
:返回数据标签的格式字符串void setLabelsFormat(const QString &format)
:设置数据标签的格式字符串
3、信号
QHorizontalBarSeries 继承自 QAbstractBarSeries,主要信号包括:
void clicked(int index, QBarSet *barset)
:当点击某个条形时触发,参数为条形在数据组中的索引和所在的数据组void hovered(bool status, int index, QBarSet *barset)
:当鼠标悬停在条形上或离开时触发,status 表示是否悬停,index 为条形索引,barset 为所在数据组void pressed(int index, QBarSet *barset)
:当按下条形时触发void released(int index, QBarSet *barset)
:当释放条形时触发void doubleClicked(int index, QBarSet *barset)
:当双击条形时触发
4、C++ 实例
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QHCandlestickModelMapper>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建数据集QBarSet *set0 = new QBarSet("Jane");QBarSet *set1 = new QBarSet("John");QBarSet *set2 = new QBarSet("Axel");*set0 << 1 << 2 << 3 << 4 << 5 << 6;*set1 << 5 << 0 << 0 << 4 << 0 << 7;*set2 << 3 << 5 << 8 << 13 << 8 << 5;// 创建水平条形图序列QHorizontalBarSeries *series = new QHorizontalBarSeries();series->append(set0);series->append(set1);series->append(set2);// 创建图表QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("Horizontal Bar Chart Example");// 创建轴QStringList categories;categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";QBarCategoryAxis *axisY = new QBarCategoryAxis();axisY->append(categories);QValueAxis *axisX = new QValueAxis();chart->addAxis(axisY, Qt::AlignLeft);chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisY);series->attachAxis(axisX);// 设置轴的范围axisX->setRange(0, 15);// 创建视图QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);// 显示图表QMainWindow window;window.setCentralWidget(chartView);window.resize(400, 300);window.show();return a.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!