qt QCategoryAxis详解
1. 概述
QCategoryAxis
是 Qt Charts 模块中的一个类,用于在图表中表示分类轴。它允许将数据映射到轴上的类别标签,每个类别可以有自己的标签和范围。与 QBarCategoryAxis
不同,QCategoryAxis
允许自由指定类别范围的宽度。这使得它非常适合用于展示非数值型数据,例如在折线图或柱状图中表示不同的类别。
2. 重要方法
append(const QString &categoryLabel, qreal categoryEndValue)
向轴上添加一个新的类别标签。
categoryLabel
是类别的名称,categoryEndValue
是该类别的结束值。
clear()
清空轴上的所有类别标签。
count()
返回轴上类别标签的数量。
at(int index)
返回指定索引位置的类别标签的文本。
remove(const QString &categoryLabel)
删除指定标签的类别。
replaceLabel(const QString &oldLabel, const QString &newLabel)
替换现有类别标签。
setStartValue(qreal min)
设置轴上第一个类别的起始值。
setRange(qreal min, qreal max)
设置轴的最小值和最大值。
3. 信号
categoriesChanged()
当轴上的类别发生变化时发出。
4. 常用枚举
AxisLabelsPosition
描述类别标签的位置:
AxisLabelsPositionCenter
:标签居中于类别。AxisLabelsPositionOnValue
:标签位于类别的高端。
5. cpp实例
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QLegendMarker>
#include <QFont>
#include <QBarSet>
QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建图表视图和图表对象QChartView *chartView = new QChartView();QChart *chart = new QChart();chartView->setChart(chart);// 创建折线序列并添加数据点QLineSeries *series = new QLineSeries();series->append(0, 5);series->append(1, 3);series->append(2, 4);series->append(3, 7);series->append(4, 2);chart->addSeries(series);// 创建分类轴 (X轴)QCategoryAxis *axisX = new QCategoryAxis();// 添加类别和对应的结束值// 区间: [0, 1) -> "C1", [1, 2) -> "C2", [2, 3) -> "C3", [3, 4] -> "C4"axisX->append("C1", 1);axisX->append("C2", 2);axisX->append("C3", 3);axisX->append("C4", 4);// 显式设置坐标轴范围,确保包含所有类别axisX->setRange(0, 4);// (可选) 设置标签显示在区间中心,避免在结束点堆积// axisX->setLabelsPosition(QCategoryAxis::AxisLabelsPositionCenter);axisX->setTitleText("Categories"); // 设置坐标轴标题// 创建数值轴 (Y轴)QValueAxis *axisY = new QValueAxis();axisY->setRange(0, 10);axisY->setTitleText("Value");// 将坐标轴与图表和序列关联chart->setAxisX(axisX, series);chart->setAxisY(axisY, series);// 设置图表标题和抗锯齿渲染chart->setTitle("QCategoryAxis Example");chartView->setRenderHint(QPainter::Antialiasing);// 显示图表视图chartView->show();return a.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!