c++ - Qt - 如何正确更改图表
问题描述
我目前正在为一个朋友开发一个软件,我正在尝试使用 Qt 图表生成一些报告,基本上我为每个月创建一个 QChart 数组QChart *cResumoMensal[12]
,并使用系列和轴迭代创建QChart
和填充:
mesAtual
是当前月份,anoAtual
是当前年份,cvResumoMensal
是QChartView
QDateTime dt = QDateTime::currentDateTimeUtc();
mesAtual = dt.date().month();
anoAtual = dt.date().year();
for(int i = 0; i < 12; i++) {
cResumoMensal[i] = new QChart();
cResumoMensal[i]->legend()->hide();
QLineSeries *series = new QLineSeries();
QDateTimeAxis *dtAxis = new QDateTimeAxis();
dtAxis->setTickCount(10);
dtAxis->setTitleText("Data");
dtAxis->setFormat("dd MMM yyyy");
QValueAxis *axisY = new QValueAxis();
axisY->setLabelFormat("%i");
axisY->setTitleText("Quantidade");
QVector<PagamentoMes> pagamentos = Mensalidade::pagamentosMes(mesAtual, anoAtual);
Q_FOREACH(const auto& p, pagamentos) {
series->append(p.dt.toMSecsSinceEpoch(), p.count);
}
cResumoMensal[i]->addAxis(dtAxis, Qt::AlignBottom);
cResumoMensal[i]->addAxis(axisY, Qt::AlignLeft);
cResumoMensal[i]->addSeries(series);
series->attachAxis(dtAxis);
series->attachAxis(axisY);
switch(i) {
case 0:
{
cResumoMensal[i]->setTitle("Resumo janeiro");
ui->lResumoMes->setText("Janeiro");
}
break;
case 1:
{
cResumoMensal[i]->setTitle("Resumo fevereiro");
ui->lResumoMes->setText("Fevereiro");
}
break;
...
}
}
cvResumoMensal->setChart(cResumoMensal[mesAtual - 1]);
我cvResumoMensal->setChart(cResumoMensal[i])
用来更改图表和cvResumoMensal->update()
更新图表视图,工作但有问题:
现在,当我去下个月时:
如您所见,由于图表标题发生了变化,但系列仍然相同,因此图表发生了变化,那么如何QChartView
正确更改图表并更新?阅读堆栈溢出中的另一个问题我看到我需要使用repaint()
或update()
但都不起作用
解决方案
推荐阅读
- android - 对 Constraint-Layout 2 的更新会破坏工作布局
- keras - 使用动态长度音频构建 Keras LSTM 音频分类器
- firebase - 无效参数:在 URI 文件中未指定主机:///null
- node.js - 如何在我的响应中返回捕获的错误?(AWS Lambda 节点.js 14)
- java - Java内存缓存
- c - 三元运算符的第一个表达式中的赋值运算符如何处理?
- google-analytics - Google Analytics - 实时数据不可用于主机名过滤器
- angular - 如何测试从服务接收 Observable 的属性值
- shopify - shopify-buy SDK 无法结帐或将商品添加到购物车了
- android - 如何在 TMapView 中使用样式化地图