我正在开发一个在主窗口中显示3个图表的应用程序,并且一切正常。但是现在在创建实例时遇到错误 应用程序崩溃的另一个窗口的类内的主窗口,调试器何时显示其中一个图表中触发的异常。
我使用了图形视图并将其升级为Qchartview,对于每个图表,代码如下:
图表_1
QPieSlice *slice = pieSeries->slices().at(0);
QFont font = slice->labelFont() ;
font.setBold(true);
font.setPointSize(15);
slice->setExploded();
slice->setLabelVisible();
slice->setPen(QPen(Qt::darkGreen, 1));
slice->setBrush(Qt::darkBlue);
slice->setLabelFont(font);
QChart *chart = new QChart();
chart->addSeries(pieSeries);
chart->setTitle("<h2>Total money of each currency</h2>");
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
pieSeries->setLabelsVisible();
pieSeries->setLabelsPosition(QPieSlice::LabelOutside);
for(auto slice : pieSeries->slices())
slice->setLabel(QString("%1%").arg(100*slice->percentage(), 0, 'f', 1));
ui->chartView_1->setChart(chart);
ui->chartView_1->setRenderHint(QPainter::Antialiasing);
图表_2
QChart *donutBreakdown = new QChart();
donutBreakdown->setAnimationOptions(QChart::AllAnimations);
donutBreakdown->setTitle("<h2>Cassettes Information</h2>");
donutBreakdown->legend()->setAlignment(Qt::AlignBottom);
donutBreakdown->addSeries(series1);
donutBreakdown->addSeries(pieSeriesPie2);
donutBreakdown->addSeries(series3);
pieSeriesPie2->setLabelsVisible();
pieSeriesPie2->setLabelsPosition(QPieSlice::LabelOutside);
double arm = 0.04;
for(int i = 0; i < pieSeriesPie2->count(); i++){
double arm = (double)i/24;
double arm2= i*0.040;
QPieSlice *slice1 = pieSeriesPie2->slices().at(i);
slice1->setLabelArmLengthFactor(arm2);
}
ui->chartView_2->setChart(donutBreakdown);
ui->chartView_2->setRenderHint(QPainter::Antialiasing);
这两个图表是饼图,并且触发的异常在chart_2上 我已经替换了chart_2,已经替换了我在表单中使用的图形视图
我正在努力解决此错误的日子。 请帮助我
答案 0 :(得分:0)
您的static_cast
m_slice = static_cast<CustomSlice *>(slice1);
可能无法正常工作。我猜您是自己制作了CustomSlice类,该类继承了QPieChart。请查看https://en.cppreference.com/w/cpp/language/static_cast。 你是说dynamic_cast吗?注释掉这些行,然后尝试重现该错误。