项目中遇到一个问题,就是QTextEdit文本框,有时候需要同时变化文本框的字体大小和文本内容。可能是嵌入式CPU的性能上不足,在绘制字体和文本的时候,有概率会出现字体先变化,然后文本后变化过程。这种跳屏现象影响了用户体验。
第一次出现的时候,考虑能不能在绘图前使用setUpdatesEnabled函数来禁用绘图更新,并且在绘图之后立刻再启用更新。
setUpdatesEnabled(false);
//字体,多个控件
//文本类容修改,多个控件
setUpdatesEnabled(ture);
上述操作虽然有改善了,就是跳屏概率出现变小了,但是还是会出现。后面发现可能是由于控件过多导致QT底层绘图还是出现了跳屏,后面怀疑就setUpdatesEnabled启用后,就是各个窗口并没有提前刷新完毕,所以在setUpdatesEnabled(ture)之前添加了200ms的延时测试,跳屏问题解决,当然这个200ms时间是个经验值,实际项目中可以自己斟酌。
setUpdatesEnabled(false);
//字体,多个控件
//文本类容修改,多个控件
//延时200ms
setUpdatesEnabled(ture);