Qt QCustomPlot使用记录

398 阅读2分钟

“我正在参加「掘金·启航计划」”

头图

Qt QCustomPlot使用记录

此文仅记录在使用Qt QCustomPlot中遇到的问题以及大致使用流程。Qt QCustomPlot详细教程推荐大家看这里

还有一个写的更好的,可以看这里

目前我的应用场景比较简单,就是采集原始数据,显示波形就可以,每分钟30帧*4路数据。采集完了保存到数据库。


Qt QCustomPlot使用记录怎么用卡怎么办定时刷新开启OpenGL 3D加速glut库支持库文件包含问题切屏屏闪GLUT 懒人包QCustomPlot懒人包

关键字: QCustomPlotQtOpenGL关键字4关键字5

怎么用

这个也是要看个人整体项目了,我这个就是一个小工具,目前没有什么构架,也没有啥要求,所以直接就在Creator里面整了一个QWidget,直接提升为QCustomPlot。如下图所示。名字还没有处理,之前用是QChart,但是技术不行,实现起来效果太卡,而且使用折线,设置颜色总是失败,所以最终还是切换到QCustomPlot。后期应该会对QCustomPlot做更多的探索,因为项目也得画曲线。

image-20220407114212676

这就等于我们在代码中创建了一个QCustomPlot对象了,可以直接使用的。

卡怎么办

在单条线测试的时候,流畅的一逼,但是当我创建4条曲线的时候,就发现还是会卡。所以有了一下内容。

定时刷新

开始的时候,我是只要有数据触发,我就刷新界面并跟新横轴范围,发现很卡,所以我使用了定时刷新,也就是用一个定时器来定时重绘界面。

开启OpenGL 3D加速

这里又要触发两个新坑,一个是需要glut库支持,一个是切屏时候屏幕闪烁。一个一个来。

glut库支持

这个直接下载官方的库,在Pro文件中引入即可解决,如下:

 LIBS += -L./-lglut\
 -lOpengl32 \
 -lglu32
库文件包含问题

这个问题是我在另一个项目中使用发现了问题,在我包含库使用隐式链接的时候,会报兼容错误。必须使用显式链接。即LIBS += -L./T_Lib/ glut.lib

image-20220408100026368

参考链接:为 MinGW 安装 GLUT

切屏屏闪

这个也是百度到的,但是时间有点旧,不知道链接去哪里了。

解决办法就是在我们的qcustomplot.cpp文件中,找到一个函数void QCPPaintBufferGlFbo::draw(QCPPainter *painter) const函数,我在得899行,如下图所示:

image-20220407131534303

在代码painter->drawImage(0, 0, mGlFrameBuffer->toImage());之前加上一下代码:

   if(QOpenGLContext::currentContext() != mGlContext.data()) {
       mGlContext.data()->makeCurrent(mGlContext.data()->surface());
   }

image-20220407131647510

这里本来想复现一下现象,结果发现注释掉也不复现了。找一之前版本的情况吧。

GLUT 懒人包

CSDN分流

QCustomPlot懒人包

CSDN分流