Сработало исключение Qchart - PullRequest
0 голосов
/ 25 сентября 2018

Я разрабатываю приложение, которое показывает 3 графика в главном окне, и все работает отлично.но теперь я столкнулся с ошибкой, когда я делаю экземпляр главного окна внутри класса другого окна, приложение раздавлено, и когда отладчик показывает исключение, вызванное в одной из диаграмм.

Я использовал графический объектпросматривать и повышать в Qchartview, и для каждого графика код выглядит так:

chart_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); 

chart_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 голосов
/ 25 сентября 2018

Ваш static_cast

m_slice = static_cast<CustomSlice *>(slice1);

, вероятно, не работает должным образом.Я полагаю, вы сами создали класс CustomSlice, который наследует QPieChart.Пожалуйста, посмотрите на https://en.cppreference.com/w/cpp/language/static_cast. Вы имели в виду dynamic_cast?Закомментируйте строки и попробуйте воспроизвести ошибку.

...