Qt5 — chartView-> gb () не захватывает дочерние элементы

Я пытаюсь построить данные в виджете 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 () не захватывает дочерние элементы?

1

Решение

Ответ на форуме Qt: захват захватывает первый кадр анимации из-за: QChart::SeriesAnimations установка. Удаление, устраняет проблему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]