Qt5 painter在控件上绘图无反应(利用eventFilter实现控件内容绘制)

1、为控件安装事件过滤器

ui->lblImage->installEventFilter(this);//安装事件过滤器

2、在头文件中添加绘制函数和事件过滤函数

bool eventFilter(QObject *obj, QEvent *event);//事件过滤
void labelPaint(QImage image);绘制函数

3、函数实现

bool TraceabilitySystem::eventFilter(QObject *obj, QEvent *event)
{
    if(obj==ui->lblImage && event->type()==QEvent::Paint)//判断是否是lblImage控件,是否是绘制事件
    {
        labelPaint(drawImage);//绘制
    }
   return QWidget::eventFilter(obj,event);
}
void TraceabilitySystem::labelPaint(QImage image)
{
    QPainter pp(ui->lblImage);
    QImage res=image.scaled(ui->lblImage->size(),Qt::IgnoreAspectRatio);//拉伸图片
    pp.begin(&res);
    pp.drawImage(0, 0, res);  
    pp.end();
    update();

4、效果如下

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值