Qt QCustomPlot使用记录
Posted DreamLife.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt QCustomPlot使用记录相关的知识,希望对你有一定的参考价值。
Qt QCustomPlot使用记录
此文仅记录在使用Qt QCustomPlot中
遇到的问题以及大致使用流程。Qt QCustomPlot
详细教程推荐大家看这里。
还有一个写的更好的,可以看这里
目前我的应用场景比较简单,就是采集原始数据,显示波形就可以,每分钟30帧*4路数据。采集完了保存到数据库。
文章目录
关键字:
QCustomPlot
、Qt
、OpenGL
、关键字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 懒人包
QCustomPlot懒人包
ustomPlot懒人包
以上是关于Qt QCustomPlot使用记录的主要内容,如果未能解决你的问题,请参考以下文章