首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qchart异常触发

Qchart异常触发
EN

Stack Overflow用户
提问于 2018-09-25 18:30:37
回答 1查看 129关注 0票数 0

我正在开发一个在主窗口中显示3个图表的应用程序,一切工作正常。但是现在我遇到了一个错误,当我在另一个窗口的类中创建主窗口的实例时,应用程序崩溃了,并且调试器在其中一个图表中显示了触发的异常。

我使用了一个图形视图并提升到Qchartview,每个图表的代码如下:

chart_1

代码语言:javascript
复制
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); 

chart_2

代码语言:javascript
复制
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,已经替换了我在表单中使用的图形视图

我与这个错误作斗争的日子。请帮帮我

EN

回答 1

Stack Overflow用户

发布于 2018-09-25 18:43:51

你的static_cast

代码语言:javascript
复制
m_slice = static_cast<CustomSlice *>(slice1);

可能不会像预期的那样工作。我猜是您自己创建了继承QPieChart的CustomSlice类。请看一下https://en.cppreference.com/w/cpp/language/static_cast。你是说dynamic_cast吗?注释掉这些行,并尝试重现错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52496033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档