Я пытаюсь построить данные в виджете QLabel, используя формат гистограммы. После создания диаграммы я фиксирую ее, используя chartView-> grab () для вставки в QLabel. Этот подход работает с круговой диаграммой, но для столбчатой диаграммы дочерние элементы (QBarSeries и QBarSet) не отображаются.
Код выглядит следующим образом:
QT_CHARTS_USE_NAMESPACE
QChartView* chartView = new QChartView();
chartView->setRenderHint(QPainter::Antialiasing);
QChart* chart = chartView->chart();
QBarSeries *series = new QBarSeries();
QBarCategoryAxis *categories = new QBarCategoryAxis();
QBarSet *set0 = new QBarSet("test");
set0->setBrush(Qt::blue);
for (int i = 0; i < 20; ++i) {
set0->append(static_cast<double>(10-std::abs(10-i)));
categories->append(QString::number(i));
}
series->append(set0);
chart->addSeries(series);
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->setTitle("Plot Test");
chart->setAxisX(categories, series);
chart->createDefaultAxes();
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);*m_chart = chartView->grab();
Это отображаемое изображение.
Если вместо этого я делаю:
chartView-> показать ();
Появится окно с данными QBarSeries. Любые идеи о том, почему метод grab () не захватывает дочерние элементы?
Ответ на форуме Qt: захват захватывает первый кадр анимации из-за: QChart::SeriesAnimations
установка. Удаление, устраняет проблему.
Других решений пока нет …