解决PaintEvent时候CPU负载过高的问题

本文介绍了一种在嵌入式系统中优化图形绘制的方法,通过使用事件过滤器来减少不必要的屏幕刷新,从而降低CPU占用率并提高系统效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当画面不停的需要刷新时,比如有计时器,那么painrEvent里如果再设置一些函数,比如画线函数的时候,那么就会使得整个PaintEvent函数需要不断刷新,导致CPU的占用率一直过高,在PC上还看不大出来问题,但是在嵌入式设备中,就会导致整个系统的资源被占用,带来一系列问题,在此处是这么规避的


bool Widget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->lbl_painter && event->type() == QEvent::Paint)
    {
        drawLines();
    }
    if(watched == this && event->type() == QEvent::Paint)


使用了一个过滤器,这样就可以规避了一直刷新的问题

void Widget::drawLines()
{
    QPainter painter(ui->lbl_painter);
    painter.setPen(Qt::green);


    painter.drawLine(2,2,100,100);
    painter.drawLine(5,5,200,200);

}

void Widget::showCamera()
{
    QPainter painter(this);
    //set transparency

    painter.setCompositionMode(QPainter::CompositionMode_Clear);

    painter.fillRect(2, 2, 50, 50, Qt::SolidPattern);
}



此处的画线函数和别的一些就可以随意处理

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值