指点成金-最美分享吧

登录

Qt QCustomPlot使用记录

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了Qt QCustomPlot使用记录相关的知识,希望对你有一定的参考价值。

Qt QCustomPlot使用记录

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

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

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


文章目录

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

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

怎么用

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

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

卡怎么办

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

定时刷新

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

开启OpenGL 3D加速

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

glut库支持

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

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

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

参考链接:为 MinGW 安装 GLUT

切屏屏闪

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

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

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

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

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

GLUT 懒人包

CSDN分流

QCustomPlot懒人包

CSDN分流


ustomPlot懒人包

CSDN分流


以上是关于Qt QCustomPlot使用记录的主要内容,如果未能解决你的问题,请参考以下文章