为 QStackedBarSeries 设置 X 轴范围

Set X-axis range for QStackedBarSeries

我正在使用以下代码创建垂直堆叠图:

QStackedBarSeries* series = new QStackedBarSeries();
m_errorSet[0] = new QBarSet("");
m_errorSet[1] = new QBarSet("");
m_errorSet[0]->setColor(QColor("red"));
m_errorSet[1]->setColor(QColor(0x00FF00));
for (i = 0; i < MAX_ERROR_COLS; i++)
{
   *m_errorSet[0] << 1;
   *m_errorSet[1] << 4;
}
series->setBarWidth(1);

series->append(m_errorSet[0]);
series->append(m_errorSet[1]);

QChart* chart = new QChart();
chart->addSeries(series);
chart->setAnimationOptions(QChart::NoAnimation);
chart->legend()->setVisible(false);

QValueAxis* axisX = new QValueAxis();
//    axisX->setMin(-4.0);
//    axisX->setMax(0.0);
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);

这很好用,它创建了一组 80 个柱,分布在 X 的整个可用尺寸上。出于某种原因,X 轴标记为 -0.5 .. 79.5 的范围。

我想要的是 -4.0 .. 0.0 的 X 轴范围。但是一旦我启用

axisX->setMin(-4.0);
axisX->setMax(0.0);

在我上面的代码中,我只得到一根柱线 - 其余的柱线超出了有效范围。

所以我的问题是:如何让条形始终位于 X 轴范围内?或者换句话说:我在哪里可以为我的柱设置 X 轴值?

谢谢!

这是顺序问题:首先附加轴,然后附加系列,以便 QStackedBarSeries 知道如何定位条形集:

QValueAxis* axisX = new QValueAxis();
axisX->setRange(-4.0,0.0);

QChart* chart = new QChart();
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);

chart->addSeries(series);
chart->setAnimationOptions(QChart::NoAnimation);
chart->legend()->setVisible(false);