我的应用程序正在嵌入式系统上运行。我已将应用程序从Qt 5.6迁移到Qt 5.9.3,并且变得非常慢。我检查了top
命令的输出,发现我的应用导致CPU使用率为100%。
因此,我检查了我的应用程序,发现这部分代码有问题:
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
...
QPixmap bg(BACK_IMG_PATH);
bg.fill(Qt::transparent);
QPalette p(palette());
p.setBrush(QPalette::Background, bg);
setAutoFillBackground(true);
setPalette(p);
...
}
问题是,如果我添加背景代码,我的应用程序将变得非常慢。但是,如果删除此代码,则我的应用程序将按预期运行。但是,这不能解决,因为我需要背景。
此问题在迁移之前不存在。
我试图通过重新实现paintEvent
并使用 QPainter 这样来解决此问题:
void MainWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawImage(QRectF(this->x(), this->y(), this->width(), this->height()), QImage("img/bg_1280_720.png"));
}
此结果稍快一些,但仍不令人满意(CPU利用率为50%)。
如何解决这个问题?