如题,之前封装一个表盘类XMeter,继承自
QLabel,里面用paintEvent画表盘,主要是通过贴图的方式来实现的,
没有像之前利用一个QLabel来在上面画,而是直接在父窗口drawImage,利用QTransform来旋转坐标系实现指针转动,由于用的不是drawPixmap(如果用此接口函数,在
开发板上运行到此处马上退出程序,不明所以,未解),所以每次刷新一次paintEvent所需的时间为270ms左右(开发板上,电脑上90ms左右),比较长,不能满足性能指标,后来直接将class XMeter : public QLabel变为class XMeter : public QOpenGLWidget,
其他代码没变。因为QOpenGLWidget可以利用硬件加速,效率提高很快,电脑上运行后测试一次paintEvent的时间缩短为1-3ms,快是快了,但背景
图片上的
部分内容会消失不见,指针旋转过程中会出现残影,跳动,具体见图,初次贸然使用了QOpenGLWidget,就出现这么个情况,对QOpenGLWidget不了解,不知道还需要补充些什么内容才能将这些不该出现的
问题缓解消除呢?
上面红框内的好多白色短线是指针的残影,指针运行过程中原本是跟指针一般长,时间推移后就剩那么短,指针向右转动;下面红框表示的是原本背景图上的内容不见了,进度条上本来可以
显示数字的,现在也不显示了。而且整个
界面粗糙了很多,没用QOpenGLWidget之前的是这样的,