我目前正在尝试用Qt中的折线图。由于某种原因,我的图表似乎显示出非常奇怪的行为。当我使用createDefaultAxis时,它会根据图表后面的Series的最小值和最大值来设置最小值和最大值。虽然这一点一开始看起来不错,但它已经与this example中的行为不同。那里的最小Y值是1,然而,轴上的最小值是0。
一开始,我想这可能是因为QChart类的变化,所以我创建了自己的Axis并再次尝试。这次我将y轴的范围从0到100,x轴的范围从1到52。另外,我将刻度计数改为4和52。然而,图表看起来仍然像以前一样,似乎没有受到轴变化的影响。
我在这里放了一个程序的截图
我希望你能帮我解决这个问题。目标是序列的值与轴上的值相匹配。
编辑:下面是主要的.cpp:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
QValueAxis *axisX = new QValueAxis();
axisX->setRange(1, 52);
axisX->setMin(1);
axisX->setMax(52);
axisX->setTickCount(52);
QValueAxis *axisY = new QValueAxis();
axisY->setRange(0, 100);
axisY->setMin(0);
axisY->setMax(100);
axisY->setTickCount(4);
chart->setAxisX(axisX);
chart->setAxisY(axisY);
chart->setTitle("Simple line chart example");
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
return a.exec();
}
2条答案
按热度按时间r7s23pms1#
series
没有附加到任何轴,默认情况下,它将缩放以利用图表的整个绘图区域。您应该将
series
附加到创建为的轴:yvt65v4c2#
要在图表上添加轴,请使用以下代码:
然后将
series
附加到其上。