Qt中如何使用OpenGL加速来提高QScatterSeries的效率

本文介绍了如何在Qt工程中通过添加OpenGL支持,以及在QScatterSeries中启用OpenGL属性来提升在处理大量数据时的性能。着重强调了系统对OpenGL的支持需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在QScatterSeries加载大量数据的情况下可以使用Opengle加速:

1、Qt工程pro中添加opengl

QT        +=  opengl

2、 QScatterSeries设置opengl开启属性

QScatterSeries*  series = new QScatterSeries();

series->setUseOpenGL(true);

注意:系统需要支持Opengl

void ChartBaseView::addData(QVector<double> x, QMap<QString, QVector<double>> y) { m_originX.swap(x); m_originY.swap(y); // 当新增数据时,判断是否需要新增折线序列 if(m_lineSeriesList.size() < m_originY.size()) { m_chart->removeAllSeries(); m_lineSeriesList.clear(); m_scatterSeriesList.clear(); for(int i = m_lineSeriesList.size(); i < m_originY.size(); i++) { // 创建折线序列 QLineSeries *lineSeries = new QLineSeries(); lineSeries->setUseOpenGL(true); lineSeries->setName(m_originY.keys().at(i)); // 设置折线名称 m_chart->addSeries(lineSeries); // 创建散点序列 QScatterSeries *scatterSeries = new QScatterSeries(); scatterSeries->setUseOpenGL(true); scatterSeries->setName(m_originY.keys().at(i)); // 设置散点名称 scatterSeries->setMarkerShape(QScatterSeries::MarkerShapeCircle); // 设置散点形状 scatterSeries->setMarkerSize(3); // 设置散点大小 scatterSeries->setBrush(QColor(lineSeries->pen().color())); // 设置散点颜色 scatterSeries->setBrush(Qt::white); // 设置散点颜色 scatterSeries->setPen(QPen(Qt::white)); // 设置散点边框颜色 = 折线颜色 m_chart->addSeries(scatterSeries); scatterSeries->setVisible(false); m_chart->createDefaultAxes(); m_chart->axes(Qt::Horizontal).first()->setRange(m_Xmin, m_Xmax); m_chart->axes(Qt::Vertical).first()->setRange(m_Ymin, m_Ymax); m_lineSeriesList.append(lineSeries); m_scatterSeriesList.append(scatterSeries); m_chart->legend()->markers(scatterSeries).at(0)->setVisible(false); // 隐藏散点图例 connect(scatterSeries, &QScatterSeries::hovered, this, &ChartBaseView::onPointHovered); } } drawLineData(); } void ChartBaseView::clearData() { m_originX.clear(); m_originY.clear(); for(int i = 0; i < m_lineSeriesList.size(); i++) { m_lineSeriesList.at(i)->clear(); m_scatterSeriesList.at(i)->clear(); } m_chart->axes(Qt::Horizontal).first()->setRange(0, 10); m_chart->axes(Qt::Vertical).first()->setRange(0, 10); m_chart->update(); }
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值