我试图使用条形图格式在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-&gt;显示();
弹出一个包含QBarSeries数据的窗口。关于为什么grab()方法没有捕获子元素的任何想法?
答案 0 :(得分:0)
在Qt论坛上回答:抓取是由于:QChart::SeriesAnimations
设置捕获动画的第一帧。删除它,解决问题。