如何在Qt中隐藏QBarCategoryAxis中的一些类别

The*_*ang 4 c++ qt qt5 qchart

QBarCategoryAxis当我创建图表时,我没有找到隐藏某些类别的方法。如果我不指定轴的类别,默认情况下类别将是从 1 到QBarSetsize。如果我指定类别,我如何才能仅显示 axis 中的某些类别。例如:如何只显示第一个和最后一个类别以及中间的类别QBarCategoryAxis

编辑:
目前我得到的是这样的:在此输入图像描述

我有一个QBarSet有 6 个元素的。而且我没有设置类别文本,所以默认情况下这些类别文本是从1到6。我想要的是显示一些类别文本,比如只显示1、3、6和其余文本(2 , 4, 5) 被隐藏。

我为什么要这样做?
因为当QBarSet元素较多并且我自己指定类别文本时,通常我需要最大化窗口,以便可以看到 axisX 中显示的所有类别文本。但我只希望图表具有固定的大小,因此对于文本,我只希望显示其中的一部分。
顺便说一句,如果一个栏集有很多元素,这将是这样的,并且在最大化窗口之前,下面的文本不会完整显示。 在此输入图像描述
编辑2:
这就是我想要的,我希望图表看起来像这样:在此输入图像描述

正如您所看到的,在 x 轴下方,只有 5 个文本。

eyl*_*esc 5

以下解决方案仅适用于您想要在 X 轴上显示日期的情况。诀窍是使用QDateTimeAxis但要做到这一点,创建一个虚构的QLineSeries,其值为 \xe2\x80\x8b\xe2\x80\x8b 日期和 in 以及其他任何内容,然后它将隐藏。

\n\n
#include <QApplication>\n#include <QtCharts>\nQT_CHARTS_USE_NAMESPACE\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n    QChartView w;\n\n    QBarSet *set0 = new QBarSet("bar1");\n\n    *set0 << 1 << 4 << 3 << 7 << 2 << 5 << 1 << 3 << 3 << 2 << 1 << 6 << 7 << 5;\n\n    QDateTime from = QDateTime::currentDateTime();\n    QLineSeries *ls = new QLineSeries; //fictitious series\n\n    for(int i=0; i < set0->count(); i++){\n        *ls << QPointF(from.addDays(i+1).toMSecsSinceEpoch(), 0);\n    }\n\n    QBarSeries *series = new QBarSeries;\n    series->append(set0);\n\n    QDateTimeAxis *axisX = new QDateTimeAxis;\n    axisX->setFormat("MMMM dd");\n    axisX->setGridLineVisible(false);\n    QValueAxis *axisY = new QValueAxis;\n\n    QChart *chart= new QChart;\n    w.setChart(chart);\n    chart->addSeries(series);\n    chart->addSeries(ls);\n    chart->setAxisX(axisX, ls);\n    chart->setAxisY(axisY, series);\n    ls->hide(); // hide serie\n\n    w.show();\n\n    return a.exec();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n