Qt开发的UI界面使用样式表导致CPU占用高的问题

运行Qt开发的UI界面时碰到了CPU占用率高的问题,经过排查,发现是在刷新时在paintevent()函数中使用了样式表setStyleSheet()更改标签的字体颜色导致的:

label->setStyleSheet("color:red");

上网查找了一下有关样式表的信息,发现其CPU占用率高是因为父控件会受子控件的样式表更改的影响,“重绘时更改子控件样式表后,主窗口的重绘事件也被调用,也就导致了每点击一个按键,最少也要调用三次主窗口的重绘事件。重复多次调用重绘事件使得在嵌入式平台中响应速度变慢。”,来自下面这个博客:

https://blog.csdn.net/weixin_42264572/article/details/82492812

要解决这个问题,改用setPalette()方法即可

QPalette pe;
pe.setColor(QPalette::WindowText,Qt::red);
label->setPalette(pe);

虽然要额外使用一个QPalette对象,比使用样式表繁琐,但可以有效地降低CPU占用率,我的UI界面在改用这个方法后,在任务管理器上看,CPU占用率从25%降到了0%,效果显著。

你可能感兴趣的:(C++,Qt)