Qchart异常触发

时间:2018-09-25 10:30:37

标签: c++ qt c++11 qt-creator

我正在开发一个在主窗口中显示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,已经替换了我在表单中使用的图形视图

我正在努力解决此错误的日子。 请帮助我

1 个答案:

答案 0 :(得分:0)

您的static_cast

m_slice = static_cast<CustomSlice *>(slice1);

可能无法正常工作。我猜您是自己制作了CustomSlice类,该类继承了QPieChart。请查看https://en.cppreference.com/w/cpp/language/static_cast。 你是说dynamic_cast吗?注释掉这些行,然后尝试重现该错误。