gpt4 book ai didi

c++ - Qt图表,系列不显示

转载 作者:行者123 更新时间:2023-11-30 04:59:57 25 4
gpt4 key购买 nike

我很难理解如何使用 Qt Charts 更新数据。

我实现了所有基础知识(系列、图表、图 TableView )并将数据添加到系列中。然而,显示的曲线仅包含 0 值。

widgetHistogramm::widgetHistogramm(QWidget *parent) : QWidget(parent)
{
// create line Series for the data
series = new QLineSeries();
// create Chart Object (QWidget)
chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Histogramm");


xAxis = new QtCharts::QValueAxis;
yAxis = new QtCharts::QValueAxis;
chart->setAxisX(xAxis);
chart->setAxisY(yAxis);

// create a view inside the Chart
chartView = new QChartView(chart, this);

// Create a layout and add Chart
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(chartView);
}

widgetHistogramm::~widgetHistogramm()
{

}


void widgetHistogramm::setData(const std::vector<int> data)
{
auto max = *max_element(std::begin(data), std::end(data));

chart->axisX()->setRange(0, data.size());
chart->axisY()->setRange(0, max);

series->clear();
for(std::vector<int>::size_type i = 0; i != data.size(); i++) {
series->append(i, data[i]);
}
chart->update();
}

此外,我想知道何时显示数据。在每个 append 上还是仅在 update 上?

最佳答案

问题是由chart->setAxisX()chart->setAxisY()引起的,必须通过系列:

chart->setAxisX(xAxis, series);
chart->setAxisY(yAxis, series);

或者简单地删除这些行,因为调用 createDefaultAxes() 时您正在创建轴。

另一方面,您不应该调用 update(),每次添加或删除系列元素时,都会通过内部调用 update() 通知 View 。

关于c++ - Qt图表,系列不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com