之前程序在启动之后未处理事件时,CPU占用一直维持在%0-1左右;但最近程序启动后突然占用达到%20了;遂开始代码回滚,逐版本查找,最后发现是由于在QPaintEvent中使用setStyleSheet导致的高CPU占用;
void Widget::paintEvent(QPaintEvent *event)
{
this->setStyleSheet("background-color: rgb(25, 25, 25);");
}
这钟方式绘制QWidget的背景,CPU占用如下所示:
于是乎换一种方式
void Widget::paintEvent(QPaintEvent *event)
{
#if 1
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
QPainterPath path;
path.addRoundedRect(QRectF(rect()), 6, 6);
painter.fillPath(path, QColor("#368FFF"));
#else
this->setStyleSheet("background-color: rgb(25, 25, 25);");
#endif
}
CPU占用就降下来了:
所以以后要避免在QPaintEvent事件中使用setStyleSheet,会导致高CPU占用;